在我接触自动化运维之前,就已经感受到了自动化的魅力,相信大家都有所了解。早起我们所用到的比较多的自动化工具就是 expect 和 shell脚本,随着集群业务的日益扩张如上两种已经不可以满足我们目前的现状。
Puppet (www.puppetlabs.com)
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
Saltstack(官网 https://saltstack.com, 文档 docs.saltstack.com )
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷(消息队列),配置和使用比puppet容易,能实现puppet几乎所有的功能。
Ansible (www.ansible.com )
更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。
Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master 和客户端 minions ;Saltstack 和 Puppet 很像,可以说 Saltstatck 整合了 Puppet 和 Chef 的功能,更加强大,更适合大规模批量管理服务器,并且它比 Puppet 更容易配置。 三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理。 支持系统:大多数都支持,windows 上不支持安装 master。
https://docs.saltstack.com/en/latest/topics/index.html
IP 地址 | 作用 |
---|---|
192.168.59.131 | Server |
192.168.59.138 | Client |
vim /etc/hosts
//增加如下:
192.168.59.131 zhdy01
192.168.59.138 zhdy02
当然你也许会有疑问,如果我们管理的是成千上万台机器,如何操作?
首先我们需要配置DNS把ip绑定在DNS上面,写个shell脚本分发到各个客户端即可!
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
yum install -y salt-master salt-minion
yum install -y salt-minion
分别在两台测试记上编辑:
vim /etc/salt/minion
//zhdy01修改为:
master: zhdy01
//zhdy02修改为:
master: zhdy01
注意如上的zhdy02 client上面一定要配置master的 salt!!!
启动服务:
//zhdy01上启动:
# systemctl start salt-master; systemctl start salt-minion
//zhdy02上启动:
# systemctl start salt-minion
# ps aux | grep salt
服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通信的端口。
master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的。
[[email protected] ~]# ls /etc/salt/pki/master/
master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
[[email protected] ~]# ls /etc/salt/pki/minion/
minion.pem minion.pub
//其中minion.pem是私钥,minion.pub是公钥
说明:
-a 后面跟主机名,认证指定主机
-A 认证所有主机
-r 跟主机名,拒绝指定主机
-R 拒绝所有主机
-d 跟主机名,删除指定主机认证
-D 删除全部主机认证
-y 省略掉交互,相当于直接按了y
4.1 认证一台client
[[email protected] ~]# salt-key -a zhdy02
The following keys are going to be accepted:
Unaccepted Keys:
zhdy02
Proceed? [n/Y] y
Key for minion zhdy02 accepted.
查看当前key状态:
[[email protected] ~]# salt-key
Accepted Keys:
zhdy02
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[root@zhdy01 minions]# ls /etc/salt/pki/master/minions
zhdy01 zhdy02
当然如果你认为不通过允许就可以直接加入:
vi /etc/salt/master
修改auto_accept 自动接收minion的key:
auto_accept: Ture
把本机也允许一下:
[[email protected] minions]# salt-key -A
[[email protected] minions]# salt-key
Accepted Keys:
zhdy01
zhdy02
Denied Keys:
Unaccepted Keys:
Rejected Keys:
删除所有的认证client
[[email protected] minions]# salt-key -D
The following keys are going to be deleted:
Accepted Keys:
zhdy01
zhdy02
Denied Keys:
zhdy02
Proceed? [N/y] Y
Key for minion zhdy02 deleted.
Key for minion zhdy01 deleted.
Key for minion zhdy02 deleted.
[[email protected] minions]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
Rejected Keys:
然后再次去添加:(出错了。。)
[[email protected] minions]# salt-key -A
The key glob '*' does not match any unaccepted keys.
在全部的server和client上面重启salt-minion服务
[root@zhdy01 minions]# systemctl restart salt-minion
再次check:
[[email protected] minions]# salt-key
Accepted Keys:
zhdy01
zhdy02
Denied Keys:
Unaccepted Keys:
Rejected Keys:
手动删除一个client
[[email protected] minions]# salt-key -d zhdy02 -y
The following keys are going to be deleted:
Accepted Keys:
zhdy02
Key for minion zhdy02 deleted.