一、安装
SaltStack基于Master-Minion架构,采用消息队列ZeroMQ在Master和Minion之间传递消息。Master在4505端口发送消息,所有的Minion都会连接到Master的4505端口接收消息。当Master发送消息时,所有Minion都会收到Master发送的消息,然后Minion根据自身的信息判断是否匹配Master指定的Minion信息,匹配到则作出回应,不匹配则不作回应,Master在4506端口接收Minion的响应消息。
在主控端安装salt-master(CentOS7系统):
# yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
# yum -y install salt-master
salt-master基础配置:
# egrep -v '^$|^#' /etc/salt/master
default_include: master.d/*.conf
interface: 0.0.0.0
timeout: 5
file_roots: #用来存放状态管理文件
base:
- /salt/
启动salt-master:
# systemctl enable salt-master
# systemctl start salt-master
在被控端安装salt-minion(CentOS7系统):
# yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
# yum -y install salt-minion
salt-minion基础配置:
# egrep -v '^$|^#' /etc/salt/minion
master: 192.168.18.131 #Master地址
id: server01 #自定义的唯一标识一个Minion的ID号
启动salt-minion:
# systemctl enable salt-minion
# systemctl start salt-minion
二、认证
Master和Minion启动后,都会生成一组密钥对,存放在“/etc/salt/pki”目录下。Minion启动后,会将自己的公钥(保存在minion.pub文件中)连同ID发送给配置文件中“master”配置项指定的Master。Master会将Minion发来的未接收的公钥先保存在“/etc/salt/pki/master/minions_pre/”目录下,以Minion的ID命名的文件中:
# ls /etc/salt/pki/master/minions_pre/
server01 server02
使用salt-key
命令来管理这些公钥:
salt-key -l "pre"
:列出所有未接收的Key;salt-key -l "accept"
:列出所有已经接收的Key;salt-key -L
:列出各种类型的所有Key;salt-key -a "server01"
:接收“server01”发来的Key;salt-key -A
:接收所有Minion发来的Key‘’;salt-key -r "server01"
:拒绝接收“server01”发来的Key;salt-key -R
:拒绝所有Minion发来的Key;salt-key -d "server01"
:删除“server01”的Key;salt-key -D
:删除所有类型的所有Key。
Master接收Minion发来的公钥后,会将接收的Minion的公钥保存在“/etc/salt/pki/master/minions”目录下,以Minion的ID命名的文件中:
# ls /etc/salt/pki/master/minions
server01 server02
同时Master会将自己的公钥也发送给所有已经接收公钥的Minion,Minion将接收到的Master的公钥保存在“/etc/salt/pki/minion/minion_master.pub”文件中。
Master接收所有的Key之后,测试Master和Minion之间是否能够正常通信,使用以下命令向所有Minion发送一个消息:
# salt '*' test.ping
命令中的'*'
代表匹配所有Minion,单引号''
起到转义的作用,也可以将''
替换为“\”等。
对所有的Minion执行一条Shell命令:
# salt '*' cmd.run "date"
使用cmd.run
可以执行所有Shell命令,对命令中包含特殊字符的,需要转义后才能执行成功。
三、YAML语法
来自百度百科(YAML)中的一段