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: 'E@kaifa_*'
  test: 'L@test_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 'G@os:CentOS or L@Minion' 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: 98VswcpIYTqQFJ9cKMf34tzqEq

salt-ssh '*' test.ping
salt-ssh -i --roster-file=roster 'Minion' test.ping
# -r 参数执行shell命令
salt-ssh -i --roster-file=roster 'Minion' -r "hostname"