Linux:自动化部署
总得来说分为2类:
- c/s模式 :通过安装客户端和服务端来进行操作
- SSH式:通过Linux上默认的SSH服务批量进行操作
可以说后者实现的更加合理,但主要还在于功能的区别,linux上能做的事很多,就因为很多,所以需要批量处理多台linux相同操作
简单介绍下几种自动化部署工具:
- puppet:是ruby语言开发的,是c/s模式,服务是通过http协议访问,所以支持使用HTTP反向代理来负载均衡已适应更多客户端请求
- chef:用ruby开发web界面提供WEB操作,是c/s模式,有多种管理模式,有API提供扩展操作,客户端支持不同的配置(基于模版)
- salt:基于python语言开发,是c/s模式,提供多种工具(包括web管理界面,基于Django开发),有3个角色,除了master和client(可安装在windows上)外,还提供syndic,用来进行性能扩展和更复杂的网络拓扑操作(对一些服务器进行master角色的操作),配置文件语法基于yaml,通过ZeroMQ进行通信
- ansible:基于python语言开发,分布式开发,任何服务器都只需安装ansible即可操作(只有一个角色),通过python的paramiko(一个python的SSH模块),所以是直接通过ssh进行操作的,进行简单的批量多服务器处理,也是通过yaml定义,通过命令行操作
- TriAquae:首先,这是款国内开发的开源运维工具,和ansible一样,是基于python+paramiko实现的,区别在于只需安装一个管理端即可b/s模式,目标是一款全面的运维管理工具:批量操作,监控,信息采集,性能分析等等
以上的工具各有所长,适应不同的需求:
- ansible可以说是最轻巧的工具,不断的新添加的模块,只需登入任意的机器即可批量操作,个人觉得处理简单任务非常合适
- chef中规中矩,是个多面手,提供的多种管理模式适应环境的改变,提供web界面进行简单操作,也提供API进行扩展开发
- salt可谓是强大,3层结构的定义可以看到它的目标,竟然还包括Windows,使用ZeroMQ无疑在通信上进行的简化,满足更灵活的通信需求
- TriAquae相当全面,并不只是自动化部署工具,如果能完善监控,则它的定义将会更新清晰
- puppet是其中最年长的,其余产品都对这位前辈表示了尊重,从工具完善和性能稳定上绝对是最出色的
从适用环境来说:ansible和TriAquae都是对Linux服务器通用的,一般没什么安装问题,puppet也是相当的合适各类服务器,chef及salt有可能对于部分服务器还不能提供很好的支持