自动化运维工具
puppet早期批量管理工具,目前使用最多的是ansible、saltstack
最简单的管理方案是:expect、sshpass/pssh脚本免密执行,但是为了之后管理更加便捷,还是需要安装自动化运维
线上有几百台机器,如何批量的修改每台机器的配置文件,例如修改Nginx配置文件、校验是否修改成功、重启Nginx、重启之后是否成功
单个手动执行肯定是不现实的,所以就需要自动化运维工具
Puppet
Puppet是早期的Linux自动化运维工具,可以批量管理远程服务器,模块丰富,配置复杂,基于Ruby语言编写。最典型的C/S模式,需要安装服务端与客户端。
Puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互,每个客户端周期地(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。
每个Puppet客户端每半小时(可以设置)连接一次服务器端,下载最新的配置文件,并且严格按照配置文件来配置客户端。
配置完成以后,Puppet客户端可以反馈给服务器端一个消息,如果出错也会给服务器端反馈一个消息。
Puppet适用于服务器管理的整个过程,比如初始安装、配置、更新以及系统下线。
SaltStack
SaltStack与Puppet均是C/S模式,需安装服务端与客户端,基于Python编写,加入MQ消息同步,可以使执行命令和执行结果高效返回,但其执行过程需等待客户端全部返回,
如果客户端未及时返回或未响应的话,可能会导致部分机器没有执行结果。
Ansible
Ansible与SaltStack均是基于Python语言开发,Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。
因为Ansible是基于SSH远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
Ansible安装使用非常简单,而且基于上千个插件和模块,实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。
通过优化SSH连接速度及使用Ansible加速模块,满足企业上万台服务器的维护和管理。