Saltstack安装配置 小记
一:为什么要用Saltstack?
不要我为什么用salt?是ansible不香么?不不不,我也想用ansible,悲催的是到了新公司就是用的salt!salt!salt!暴击三连~~生无可恋~~
此时,还能说啥?撸起袖子加油干~~~
简单区别:Saltstack、Ansible都是优秀的批量管理工具。
Ansible主要基于ssh协议进行相关操作,它的特点是不需要客户端,大规模环境下只通过ssh会比较慢。salt会使用C/S结构的模式,salt-master和salt-minion并行的,大规模批量操作的情况下,会比Ansible速度快一些。底层使用的是zero-MQ消协队列。
二:安装
1.根据运行版本,导入saltstack存储库密钥
版本7【centos】:
rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
版本6【centos】:
rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
2.配置源【将以下内容保存到 /etc/yum.repos.d/saltstack.repo】
版本7和6【centos】:
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
3.管理端【master】配置:
yum -y install salt-master salt-minion
解释:作为管理端,也是需要管理自己的。所以既是管理端也是被管理端
systemctl start salt-master #管理端不需要做配置,直接启动即可
[root@es1]/etc/salt# vim minion
master:
- 172.30.6.160 [只需要告诉minion,master的地址即可]
systemctl start salt-minion
注意:管理端比较特殊,管理其他服务器。但是自身也需要被管理,所以他会同时安装salt-master和salt-minion。master不需要配置直接启动,而在minion里面需要配置master的地址后在启动。
4.被管理端【minion】配置
也是需要配置源的,请自行看上面好伐??
yum install -y salt-minion
[root@es2]/etc/salt# vim minion
master:
- 172.30.6.160 [只需要告诉minion,master的地址即可]
systemctl start salt-minion
如果还有其他被管理机器,还是参考4步骤即可。配置源>安装salt-minion>修改minion【配置master地址】>启动minion
敲黑板!!此时请注意~~重点~~必考~~
在minion配置中一般只需要配置master的地址即可,这个时候我们在master端去检测被管理端的时候默认看到的是被管理端的主机名字。如果,如果,你不想看到主机名或者是你跟着百度出来的文档去修改了minion的配置,那么在master看到的主机名会变的好伐??
id:master_id #这一项在minion的配置中默认是注释掉的,如果开启了那么你在master看到的名字会以这个为准,而不再是minion 的主机名啦~~~
所以,请不要打开这个注释,如果发现不是默认机器的主机名,检查是否开启了这个配置。
举个🌰:[root@es1]/etc/salt# salt-key -L
Accepted Keys:
es1
es2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
在minion我没有修改id这香配置,所以我在我的管理端查看时默认就是被管理端的主机名啦~~~
至此,salt的管理端和被管理端就安装完成啦~~~是不是超级简单~~~
三:关联
以上两步我们只是简单的安装了salt的master和minion,此时的master还不能直接去管理minion。接下来我理解成关联,让master和minion产生联系。
这个步骤就来啦~~
[root@es1]/etc/salt# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys: #此时的公钥是未被接受的状态,所以我们还需要建立连接
es1
es2
Rejected Keys:
salt-key -L返回信息:
Accepted Keys: 接受的公钥列表或者是被控主机
Unaccepted Keys: 未被接受的公钥列表
Rejected Keys: 被拒绝的公钥列表
salt-key 常用选项:
-L ==list-all ##显示【全部】已经或未认证的被控端id
-A ==accept-all ##接受所有id证书请求
-D ==delete-all ##删除所有的公钥
-a ##接受单个id证书请求
-d ##删除单个id证书请求
so,看完上面的,下面我们要做的就是接受公钥~~
[root@es1]/etc/salt# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
es1
es2
Proceed? [n/Y] y
Key for minion es1 accepted.
Key for minion es2 accepted.
[root@es1]/etc/salt# salt-key -L
Accepted Keys:
es1
es2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
连接建立结束,那么来试一试吧~~~
[root@es1]/etc/salt# salt '*' test.ping
es1:
True
es2:
True
成功,撒花~~~
小黑板再次来袭~~看过来~~
我们的管理端启动服务后,检查端口是有2个的,一个4505,一个4506。而minion是没有端口启动的,所以,是出问题了么?
no,no,no~~ 那是因为Saltstack默认使用zeromq传递消息,zeromq会随着Salt的安装而安装,master通过4505端口将指令放入zeromq的队列中,而所有的minion都会监听master的4505端口,然后从队列中拿消息进行对比决定是否进行操作,如果操作将自己操作的结果丢回zeromq另外一个队列,master从4506端口监听该队列,得到返回结果,然后展示出来。
简单来说就是:4505发送指令,4506接收结果
问题总结:如果你致意要修改minion的id,发现你修改了毫无反映~~
【接下来的部分是copy的,出于尊重我将大大的地址附上,有需要的可以看大大的原文
https://www.cnblogs.com/bfmq/p/7871869.html】
启动master,生成自己的密钥与公钥,叫master.pem ,master.pub
1 [root@linux-node1 master]# pwd 2 /etc/salt/pki/master 3 [root@linux-node1 master]# ls 4 master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
minion配置文件内指定Master,开启服务,生成自己的密钥与公钥,叫minion.pem ,minion.pub
1 [root@linux-node2 minion]# pwd 2 /etc/salt/pki/minion 3 [root@linux-node2 minion]# ls 4 minion.pem minion.pub
minion会想配置的目标发将自己的公钥存放在master的/etc/salt/pki/master/minions_pre下,请问你是我的master嘛
master一看,我靠,女装大佬,可爱,想,就表示,对对对我就是你的master,然后接受密钥,并把自己的公钥发给minion从而正式签订契约,此时minions_pre下的minion公钥转放到/etc/salt/pki/master/minions下,而master的公钥也会在minion的/etc/salt/pki/minion下保留一份
1 [root@linux-node2 minion]# ls 2 minion_master.pub minion.pem minion.pub
所以我们根据上述流程,当minion的id变更后,我们需要进行如下操作
1 minion端停止salt-minion 2 master端salt-key –d 原本minion的id 3 minion端删除/etc/salt/pki/minion下所有文件 4 minion端修改配置文件中的id变成需要的新id 5 重启minion端的salt-minion 6 master端认证接受新的id