互联网技术的发展,机房里面机器的数量随之增加,运维的难度和复杂度也在增加,需要投入的运维人员和成本也在增加,从而催生了一系列的自动化运维工具(Ansible、SaltStack、Puppet)的产生来减少运维的成本。
Ansible、SaltStack、Puppet都是目前比较受用户欢迎的自动化化运维工具,其中Ansible和SaltStack使用python编写,具有良好的可移植性。Puppet的使用脚本语法复杂,且可移植性比较差,目前的使用者慢慢变少。
SaltStack
saltStack由Python编写,为server-client模式的系统(在salstack中叫Master-Minion),自己本身 支持多master,而puppet则需要依赖于web服务器。saltstack除了可以通过在节点安装客户端进行管理还支持直接通过ssh进行管理。 运行模式为master端下发指令,客户端接收指令执行。
saltstack依赖于zeromq消息队列,采用yaml格式编写配置文件,比较简单。
支持api及自定义python模块,能轻松实现功能扩展。
Ansible
ansible安装与部署
类似与saltstack,基于python开发,关注的重点是精简和快速。不需要在节点安装代理软件,通过ssh执行所有功能。安装运行简单。
其模块可以用任何语言开发,采用yaml格式编写配置文件。
没有客户端,较难扩展。
Puppet
puppet由Ruby编写,为server-client模式的系统。运行时由客户端定时去获取自己的配置文件进而应用更改。也可以通过master的push命令即可触发变更。
将命令,文件,服务等抽象成资源,概念比较统一,时间悠久,文档较多。
就可用操作,模块,用户界面等等功能而言,是三者之中最全面的,安装部署难度一般,配置清单相对于其他工具较复杂。
部署saltstack
环境:
server1(salt-master) | 172.25.60.1 |
---|---|
server2 (salt-minion) | 172.25.60.2 |
server3 (salt-minion) | 172.25.60.3 |
1.下载slat-matser,salt-minion
真机配置salt的第三方yum仓库
server1,2,3上westos.repo文件写入salt
server1安装slat-matser
server2,3安装slat-minion
server2,3修改minion配置文件
cd /etc/salt/
vim minion
16 master: 172.25.60.1
systemctl start salt-minion.service
cat minion_id
server1查看salt-minion连接情况[root@server1 yum.repos.d]# salt-key -L ##查看所有的key
[root@server1 yum.repos.d]# salt-key -A ##填加所有id证书请求
server1 可以与server2,3通信yum install -y lsof
查看端口
Master与Minion通信SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port) 为saltstack的消息发布系统,4506 (ret_port) 为saltstack客户端与服务端通信的端口。如果使用lsof查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。