自动化运维工具

需求:成百上千台机器,批量地执行某些命令、批量地升级某个服务。

Shell、expect脚本就可以实现自动化,但是需要我们自己手动编写脚本,效率低下、学习和维护成本很高。

主流自动化运维工具:Puppet、Saltstack、Ansible等。

Puppet

关于Puppet的介绍文章:https://blog.51cto.com/ixdba/1149055

Puppet是开源的基于Ruby的系统配置管理工具,基于C/S的部署架构。是一个为实现数据中心自动化管理而设计的配置管理软件,它使用跨平台语言规范,管理配置文件、用户、软件包、系统服务等。客户端默认每隔半小时会和服务器通信一次,确认是否有更新。当然也可以配置主动触发来强制客户端更新。这样就把日常的系统管理任务代码化了,代码化的好处是可以分享,保存,避免重复劳动,也可以快速恢复以及快速的大规模部署服务器。

Saltstack

Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。C/S架构,由Master和Minion构成,通过ZeroMQ进行通信。Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。

Ansible

ansible是个什么东西呢?官方的title是:Ansible is Simple IT Automation. 中文解释:简单的自动化IT工具。

这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。

所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令 。当然,最主要的是它是基于paramiko开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。简单归纳一下:基于Python paramiko开发,分布式,无需客户端,轻量级,配置语法使用YMAL及Jinja2模板语言,更强的远程命令执行操作。

Saltstack vs Ansible

  • Saltstack必须要安装agent(minion),所以部署环节多了一步,Ansible无需安装agent。

  • SaltStack是C/S架构,有master和minion,Ansible只需要有一个中心节点。

  • Saltstack基于ZeroMQ通信,Ansible基于ssh,Saltstack执行效率比Ansible快,如果机器量很大(>200)最好使用Saltstack

  • Ansible相比较Saltstack,学习起来更加容易

其他方面更详细的对比,参考 https://www.cnblogs.com/huang0925/p/4664608.html

05-11 13:43