SaltStack说明文档
master安装
# 安装
yum -y install salt-master salt-minion salt-ssh
# 启动
systemctl start salt-master salt-minion
master管理端配置
vim /etc/salt/master
#保存以下配置文件即可
interface: 0.0.0.0
file_recv: True
file_roots:
base:
- /srv/salt/
pillar_roots:
base:
- /srv/pillar
nodegroups:
kaifa: '[email protected]_*'
test: '[email protected]_0001,test_0002'
认证成功的minion文件路径:/etc/salt/pki/master/minions
minion被管理端配置
# 安装
yum -y install salt-minion
# 将master ip添加到hosts
sed -i 's/#master:.*/master: MASTER_IP/' /etc/salt/minion
# 设置minion标识,设置为ip地址
sed -i 's/#id:.*/id: MINION_HostName/' /etc/salt/minion
# 启动
systemctl restart salt-minion
master主机上执行认证
salt-key -L
salt-key -A -y
# 删除单个主机
salt-key -d minion_name
# 删除所有认证主机
salt-key -D
# 被删除minion主机重新认证
rm -f /etc/salt/pki/minion/minion.*
systemctl restart salt-minion
# 检查master主机是否能正常在minion上执行命令
salt '*' test.ping
salt常用命令说明
salt '' [arguments]
target: 执行salt命令的目标,可以使用正则表达式
function: 方法,由module提供
arguments: function的参数
target常用表达式
# 1. 正则表达式
salt -E 'Minion*' test.ping
salt -E 'aaa*|.*bbb*|ccc-*' cmd.run test.ping
# 2. 列表匹配
salt -L Minion,Minion1 test.ping
# 3. Grians匹配
salt -G 'os:CentOS' test.ping
# 4. 组匹配
salt -N groups test.ping
# 5. CIDR匹配
salt -S '127.0.0.1' test.ping
salt -S '10.252.0.0/16' test.ping
salt -S '10.252.137.0/24' test.ping
# 6. 复合匹配
salt -C '[email protected]:CentOS or [email protected]' test.ping
function常用表达式
salt '*' cmd.run "hostname'"
salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 arg3'
salt 传送文件
salt传输文件、文件夹的固定目录为: /srv/salt/
# 传送文件 (mkdirs可选参数,目录不存在,自动创建)
salt "*" cp.get_file salt://iplist /home/iplist makedirs=True
# 传送目录
salt "*" cp.get_dir salt://abc/ home/
salt 远程执行脚本
- 可将脚本分发到远程服务器,再通过cmd.run命令执行
- master服务器执行
salt "*" cmd.script salt://test.sh
cp.push 模块使用
允许minion上传文件到master端
注意事项:
cp.push功能默认不开启,需要修改配置文件中的file_recv环境
vim /etc/salt/master
file_recv参数默认为False,修改为True
# 上传的文件存放在master端的/var/cache/salt/master/minions/<minion_id>/files/目录下
salt "*" cp.push /data/backup/DB_$(date +"%Y%m%d").sql
salt-ssh 使用
# 不允许安装minion或不用长期管理某台minion
# 安装
yum -y install salt-ssh
# 配置文件
vim /etc/salt/roster
cat /etc/salt/roster
linux-node1.example.com:
host: 192.168.56.11
port: 22
user: root
passwd:
linux-node2.example.com:
host: 192.168.56.12
port: 22
user: root
passwd: 98Vs
salt-ssh '*' test.ping
salt-ssh -i --roster-file=roster 'Minion' test.ping
# -r 参数执行shell命令
salt-ssh -i --roster-file=roster 'Minion' -r "hostname"