需要 salt-master 0.17以上版本支持
1.安装
相关依赖包可查看requirements.txt
Jinja2
M2Crypto
msgpack-python
pycrypto
PyYAML
pyzmq >= 2.1.9
markupsafe
[root@server1 salt]# git clone https://github.com/saltstack/salt.git
[root@server1 salt]# python setup.py install
2.roster定义
花名册(roster)定义存放主机列表文件,默认存放在/etc/salt/roster
格式:
<Salt ID>: # ID,用于salt-ssh引用
host: # IP或域名
user: # 登录用户名
passwd: # 登录密码 # 可选参数
port: # 自定义的端口
sudo: # 是否允许sudo到root,默认不允许
priv: # ssh登录key路径,默认为salt-ssh.rsa
timeout: # 等待超时
[root@server1 salt]# vim /etc/salt/roster
3.测试连接及执行命令
这时就可以对所定义的服务器执行命令了:
执行格式:
salt 参数 对象 命令
其中对象支持多种匹配方式,常见的 通配符、正则表达式、列表、分组、复合匹配等
4.相关参数:
查看文件及执行命令
salt-ssh '*' [ options ] sys.doc
salt-ssh -E '.*' [ options ] sys.doc cmd
-r 执行shell命令
--roster-file 指定roster文件
--refresh 强制刷新master端缓存数据
--max-procs 设置客户端并发数,默认25
--passwd 设置默认密码
--out-file=output_file, --output-file=OUTPUT_FILE 把信息输出到指定文件
--no-color 输出的结果不带颜色
salt-ssh 第一次执行是根据roster的账号密码推送密码,来实现自动交互的。
执行完了后 会在目标的服务器里面,追加master端的key,以后再对服务器执行操作不再依赖于密码。
5.遇到错误:
问题1:
[root@server1 salt]# salt-ssh '*' [ options ] sys.doc
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
[WARNING ] Console logging already configured
[WARNING ] Warning: sshpass is not present, so password-based authentication is not available.
解决:
[root@server1 salt]# easy_install msgpack-python
问题2:
[WARNING ] Warning: sshpass is not present, so password-based authentication is not available.
[root@localhost salt]# yum -y install sshpass
参考:https://salt.readthedocs.org/en/latest/ref/cli/salt-ssh.html