参考:https://repo.saltstack.com/#rhel
一,安装
系统的环境为centos6
master端和minion端都要配置salt的yum源。
下载安装salt源的key,并配置salt源的地址repo
[root@cong-33 nginx]#sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el6.noarch.rpm
[root@cong-33 nginx]# yum clean expire-cache
更新yum的cache
[root@cong-33 nginx]# yum makecache
salt的master端安装:
[root@cong-33 nginx]# yum install -y salt-master
salt的minion端安装:
[root@cono-49 ~]# yum install -y salt-minion
安装完成后,先配置minion端。
配置minion的id和指导master的地址
[root@cono-49 ~]# vim /etc/salt/minion ##minion的主要配置文件
配置好上面的id 选项,master的选项就可以了
配置完成就可以启动了
[root@cono-49 ~]# service salt-minion start
master端
master的配置文件时 /etc/salt/master
master可以先不做配置的更改,直接启动
[root@cong-33 nginx]# service salt-master start ##监听2个端口 [root@cong-33 nginx]# netstat -tlnp|grep python tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1815/python2.7 tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1829/python2.7 [root@cong-33 nginx]#
通过minion端的key认证
[root@cong-33 nginx]# salt-key -L ##查看salt的key认证情况 [root@cong-33 nginx]# salt-key -a cong-49 ##通过指定的minion认证, [root@cong-33 nginx]# salt-key -L Accepted Keys: ##已通过认证的minion cong-49 Denied Keys: Unaccepted Keys: ##等待确认的minion Rejected Keys: [root@cong-33 nginx]#
测试master与minion是否正常通讯
[root@cong-33 nginx]# salt '*' test.ping ## '*' 表示所有的minion,可以输入指定的minion_id,或者使用正则匹配 匹配指定的minion cong-49: True [root@cong-33 nginx]#
返回True说明master与minon已经可以正常通讯了。
下面写一点salt的相关知识点。
认证过程
启动minion服务后,会产生一个密钥对,然后minion会根据配置的master地址去连接master,并尝试把公钥发给master,minion_id表示minio的身份。
在master上可以使用salt-key来查看密钥认证的情况,直到密钥认证后,master和minion就可以通信了,我们就可以通过state模块来管理minion。
minon密钥目录
[root@cono-49 ~]# ll /etc/salt/pki/minion/ total 12 -rw-r--r--. 1 root root 450 Nov 15 09:59 minion_master.pub ##认证通过后master发过来的master公钥 -r--------. 1 root root 1674 Nov 15 09:58 minion.pem -rw-r--r--. 1 root root 450 Nov 15 09:58 minion.pub [root@cono-49 ~]#
在minion服务没有启动时,pki目录是不存在的。minion服务启动后,会创建pki目录,minion目录和密钥对。
我们可以把pki目录删除,然后重启服务会重新生成pik目录。
master密钥目录
[root@cong-33 nginx]# ll /etc/salt/pki/master/minions total 4 -rw-r--r--. 1 root root 450 Nov 15 17:59 cong-49 ##已通过的minion密钥 [root@cong-33 nginx]#
master接受minion的公钥后会存放在/etc/salt/pki/master/minions目录下,以minion的id来命名。
同时master会把自身的公钥发给minion。
master端的pki目录千万不要删除,因为这个目录包含了所有minion的认证密钥。不过我们可以删除指定minion的密钥文件。
也可以 用命令salt-key删除指定minion的key认证
重新认证:
在master把对应的minion的key删掉:
salt-key -d 192.168.1.49
查看密钥保存目录是否存在对应mining的密钥key,如果存在删除它
[root@cong-33 nginx]# ll /etc/salt/pki/master/minions
minion端
停止minion服务:
[root@cono-49 ~]# /etc/init.d/salt-minion stop
删除key目录让其重新生成:
rm -rf /etc/salt/pki
启动服务
/etc/init.d/salt-minion start
salt-key命令 salt-key -L 列出master的key认证情况 salt-key -a minion_id 通过指定minion的key认证 salt-key -A 批量通过minion的key认证 salt-key -d minion_id 删除指定minion的key认证 salt-key -D 批量删除minion的key认证
minion没有监听端口的。minion在通过与master的key认证后一直与master的4505端口保持连接。
master监听4505和4506两个端口,
4505是消息发布端口,
4506是消息接收端口,接收执行返回结果和命令执行情况的