Saltstack

Posted R.U.Ready

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Saltstack相关的知识,希望对你有一定的参考价值。

第一步,安装依赖

根据官方文档的安装说明,安装相关依赖包:

依赖

Salt可以运行在类Unix平台,安装时需要解决如下依赖:

  • Python 2.6 >= 2.6 <3.0
  • msgpack-python - 高性能的消息交换格式

  • YAML - Python YAML bindings
  • Jinja2 - 解析Salt States (在master配置文件中配置)

  • MarkupSafe - Implements a XML/html/XHTML Markup safe string for Python
  • apache-libcloud - 与大量的主流云服务提供者进行交互时统一API的Python类

  • Requests - HTTP library
  • Tornado - Web framework and asynchronous networking library
  • futures - Backport of the concurrent.futures package from Python 3.2

Depending on the chosen Salt transport, ZeroMQ or RAET, dependencies vary:

  • ZeroMQ:
  • RAET:
    • libnacl - Python bindings to libsodium
    • ioflo - The flo programming interface raet and salt-raet is built on
    • RAET - The worlds most awesome UDP protocol

 

1. Python

本文使用的操作系统为:

默认的 python 版本为:

2. msgpack-python

1)地址

https://pypi.python.org/pypi/msgpack-python/

2)版本

msgpack-python-0.4.8.tar.gz

3)安装

# tar zxvf msgpack-python-0.4.8.tar.gz
# cd msgpack-python-0.4.8
# python setup.py install

3. YAML

1)地址

http://pyyaml.org/

2)版本

yaml-0.1.7.tar.gz

PyYAML-3.12.tar.gz

3)安装

LibYAML 0.1.7

# tar zxvf yaml-0.1.7.tar.gz
# cd yaml-0.1.7
# ./configure
# make
# make install

PyYAML 3.12

需要先安装相关依赖:

# yum install gcc libffi-devel python-devel openssl-devel

安装:

# tar zxvf PyYAML-3.12.tar.gz
# cd PyYAML-3.12
# python setup.py --with-libyaml install

4. MarkupSafe

1)地址

https://pypi.python.org/pypi/MarkupSafe

2)版本

MarkupSafe-1.0.tar.gz

3)安装

# tar zxvf MarkupSafe-1.0.tar.gz
# cd MarkupSafe-1.0
# python setup.py install

5. Jinja2

1)地址

https://pypi.python.org/pypi/Jinja2

2)版本

Jinja2-2.9.5.tar.gz

3)安装

# tar zxvf Jinja2-2.9.5.tar.gz
# cd Jinja2-2.9.5
# python setup.py install

6 . apache-libcloud

1)地址

http://libcloud.apache.org/downloads.html

2)版本

apache-libcloud-1.5.0.tar.gz

3)安装

# tar zxvf apache-libcloud-1.5.0.tar.gz
# cd apache-libcloud-1.5.0
# python setup.py install

7. Requests

1)地址

http://docs.python-requests.org/en/latest/user/install/#install

2)版本

kennethreitz-requests-v2.13.0-90-g993cbf5.tar.gz

3)安装

# tar zxvf kennethreitz-requests-v2.13.0-90-g993cbf5.tar.gz
# cd kennethreitz-requests-993cbf5
# python setup.py install

8. Tornado

1)backports-abc

地址

https://pypi.python.org/simple/backports-abc/

版本

backports_abc-0.5.tar.gz

安装

# tar zxvf backports_abc-0.5.tar.gz
# cd backports_abc-0.5
# python setup.py install

2)certifi

地址

https://pypi.python.org/simple/certifi/

版本

certifi-1.0.0.tar.gz

安装

# tar zxvf certifi-1.0.0.tar.gz
# cd certifi-1.0.0
# python setup.py install

3)singledispatch

地址

https://pypi.python.org/simple/singledispatch/

版本

singledispatch-3.4.0.2.tar.gz

安装

# tar zxvf singledispatch-3.4.0.2.tar.gz
# cd singledispatch-3.4.0.2
# python setup.py install

4)tornado

地址

https://pypi.python.org/pypi/tornado/4.4.2

版本

tornado-4.4.2.tar.gz

安装

# tar zxvf tornado-4.4.2.tar.gz
# cd tornado-4.4.2
# python setup.py install

9. futures

1)地址

https://github.com/agronholm/pythonfutures

2)版本

pythonfutures-master.zip

3)安装

# unzip pythonfutures-master.zip
# cd pythonfutures-master
# python setup.py install

10. ZeroMQ

1)地址

http://zeromq.org/intro:get-the-software

2)版本

zeromq-4.2.1.tar.gz

3)安装

# tar zxvf zeromq-4.2.1.tar.gz
# cd zeromq-4.2.1
# ./configure
# make
# make install

11. pyzmq

1)Cython

地址

https://pypi.python.org/pypi/Cython/

版本

Cython-0.25.2.tar.gz

安装

# tar zxvf Cython-0.25.2.tar.gz
# cd Cython-0.25.2
# python setup.py install

2)pyzmq

地址

https://github.com/zeromq/pyzmq

版本

pyzmq-master.zip

安装

# unzip pyzmq-master.zip
# cd pyzmq-master
# python setup.py install

12. PyCrypto

1)地址

https://www.dlitz.net/software/pycrypto/

2)版本

pycrypto-2.6.1.tar.gz

3)安装

# tar zxvf pycrypto-2.6.1.tar.gz
# cd pycrypto-2.6.1
# python setup.py install

第二步,安装 Saltstack

1. 地址

https://github.com/saltstack/salt

https://pypi.python.org/pypi/salt/

2. 版本

salt-develop.zip

3. 安装

# unzip salt-develop.zip
# cd salt-develop
# python setup.py install

4. 测试

执行以下命令:

# salt --versions-report

返回信息:

第三步,配置

1. master

1)配置

# mkdir /etc/salt
# cd salt-develop/
# cp -a conf/master /etc/salt/
# cp -a pkg/suse/salt-master /etc/init.d/
# chmod +x /etc/init.d/salt-master
# chkconfig --level 235 salt-master on

2)编辑 /etc/salt/master

# vim /etc/salt/master

master 中的内容:

interface: 192.168.6.128
auto_accept: True

3)启动

# service salt-master start

4)查看

# netstat -ntlp

# ps aux | grep python

2. minion

1)配置

# mkdir /etc/salt
# cd salt-develop
# cp -a conf/minion /etc/salt/
# cp -a pkg/suse/salt-minion /etc/init.d/
# chmod +x /etc/init.d/salt-minion
# chkconfig --level 235 salt-minion on

2)编辑 /etc/salt/minion

# vi /etc/salt/minion

minion 文件的内容:

master: 192.168.6.128
id: minion-192-168-6-128

3)启动

# service salt-minion start

4)查看

# ps aux | grep python

3. 查看 salt key 信息

执行命令:

# salt-key -L

返回信息:

如果在 /etc/salt/master 的配置文件中没有配置自动接收 key,可以使用以下命令:

# salt-key -A

返回信息:

再次查看:

第四步,测试

1. 测试被控主机的连通性

执行命令:

# salt \'*\' test.ping

返回信息:

2. 远程命令执行测试

执行命令:

# salt \'*\' cmd.run \'uptime\'

返回信息:

3. 根据被控主机的grains信息进行匹配过滤

执行命令:

# salt -G \'os:Centos\' test.ping

返回信息:

4. 显示被控主机的操作系统类型

执行命令:

# salt \'*\' grains.item os

返回信息:

5. 远程代码执行测试

执行命令:

# salt \'*\' cmd.exec_code python \'import sys; print sys.version\'

返回信息:

第五步,常用模块

1. cp 模块

实现远程文件、目录的复制,以及下载URL文件等操作。
1)将主服务器 file_roots 指定位置下的目录复制到被控主机
# salt \'*\' cp.get_dir salt://hellotest /data

2)将主服务器file_roots指定位置下的文件复制到被控主机
# salt \'*\' cp.get_file salt://hellotest/rocketzhang /root/rocketzhang

3)下载指定URL内容到被控主机指定位置
# salt \'*\' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

2. cmd 模块

实现远程的命令行调用执行
# salt \'*\' cmd.run \'netstat -ntlp\'

3. cron 模块

实现被控主机的crontab操作
1)为指定的被控主机、root用户添加crontab信息
# salt \'*\' cron.set_job root \'*/5\' \'*\' \'*\' \'*\' \'*\' \'date >/dev/null 2>&1\'
# salt \'*\' cron.raw_cron root

2)删除指定的被控主机、root用户的crontab信息
# salt \'*\' cron.rm_job root \'date >/dev/null 2>&1\'
# salt \'*\' cron.raw_cron root

4. dnsutil 模块

实现被控主机通用DNS操作
为被控主机添加指定的hosts主机配置项
# salt \'*\' dnsutil.hosts_append /etc/hosts 127.0.0.1 rocketzhang.qq.com

5. file 模块

被控主机文件常见操作,包括文件读写、权限、查找、校验等

# salt \'*\' file.get_sum /etc/resolv.conf md5
# salt \'*\' file.stats /etc/resolv.conf

6. network 模块

返回被控主机网络信息

# salt \'*\' network.ip_addrs
# salt \'*\' network.interfaces

7. pkg 包管理模块

被控主机程序包管理,如 yum、apt-get 等
# salt \'*\' pkg.install nmap
# salt \'*\' pkg.file_list nmap

8. service 服务模块

被控主机程序包服务管理

# salt \'*\' service.enable crond

# salt \'*\' service.disable crond

# salt \'*\' service.status crond

# salt \'*\' service.stop crond

# salt \'*\' service.start crond

# salt \'*\' service.restart crond

# salt \'*\' service.reload crond

9. 更多功能

如:grains、pillar、states、modules、returner、runners、reactor等,以及模板配置的渲染、扩展模块的二次开发等。

以上是关于Saltstack的主要内容,如果未能解决你的问题,请参考以下文章

首发分析 | SaltStack远程执行代码多个高危漏洞透析(CVE-2021-25281/25282/25283)

Python操作Saltstack

预警通报关于SaltStack多个高危漏洞的预警通报

漏洞告警SaltStack多个高危漏洞(CVE-2021-25281/25282/25283)

漏洞更新SaltStack 多个高危漏洞(含漏洞分析及深信服解决方案)

Saltstack