Puppet Saltstatck Ansible 自动化运维工具对比
最近尝试安装了一下salt statck就对自动化工具感兴趣了点所以找了一些资料入门下面总结一下希望和看到这篇文章一起探索自动化运维的世界。 --- 小 Q
------------------------------------------------------------------------------------------------------
自动化运维就是为减少重复又枯燥的工作而建立起来的流程更能减少失误及时报警并恢复等等
但也要记住工具始终是工具不能过分依赖
传统的运维
传统运维效率低大多工作人为完成 传统运维工作繁琐容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多不能方便管理 随着it行业发展及云计算的普及企业架构不断地扩张这种情况下急需摆脱人工操作实现自动化。
自动化运维
安装自动化 部署自动化 监控自动化 发布自动化 升级自动化 安全管控自动化 优化自动化 数据备份自动化
自动化前三阶段
纯手工 仅依靠人力手工部署和运维
脚本阶段通过编写大量脚本进行软件部署和运维
工具阶段借助三方工具高效、方便的部署和运维。
目前Linux下比较好用的开源工具如下图趋势具体介绍参考链接
http://www.open-open.com/news/view/f6a20c
=============================================================
下面我们只比较相对来说比较常用的自动化运维工具puppet saltstatck ansible
Puppet www.puppetlabs.com
基于rubby开发c/s架构支持多平台可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版免费和企业版收费企业版支持图形化配置。
Saltstack中国用户组 www.saltstack.cn
基于python开发c/s架构支持多平台比puppet轻量在远程执行命令时非常快捷配置和使用比puppet容易能实现puppet几乎所有的功能。
Ansible www.ansible.com
更加简洁的自动化运维工具不需要在客户端上安装agent基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。
【语言的比较】
puppet和chef 开发语言是rubysaltstatck和ansible 开发语言是python。
两种语言各有优势不过依现在的形式来看我还是很倾向于python语言开发出的工具。
1、Ruby的优点
1) Ruby是一种动态面向对象语言具有很多强大的面向对象的高级特性Ruby更加贴近英语的自然语言描述和表达能力很好语法扩展能力很强
2) 拥有功能强大和完善的标准类库拥有良好的交互式运行环境:IRB方便进行开发和调试拥有一个完善的Web开发框架Rails
3) 采用虚拟机实现跨平台支持垃圾回收
2、Python的优点
1) Python开发人员的背景丰富多彩阵营规模很大 Python的各种lib比Ruby多
2) 和Ruby相反Python的哲学是“做一件事情有且只有一种方法”There should be one-- and preferably only one --obvious way to do it.。Ruby的信徒会觉得这样非常boring但是我觉得这一点减轻了人们在开发时的认知负担和选择成本对于提高开发效率是很有帮助的。同时这个特点使得不同的人用Python写出来的代码不至于相差很大这对于团队合作也是很有用的
3) Python解释器特别是CPython目前比现有的Ruby解释器快很多
4) 大数据方面人工智能图像处理GUI等方面python的积累还是很厚的。很少见ruby的身影
5) 强大的数据结构。默认安装的Python开发环境已经附带了很多高级数据类型如列表、元组、字典、集合、队列等无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。
6) 插件齐全可以完成绝大部分的程序设计任务。
【性能的比较】
因为现在大家都比较倾向于python开发的工具所以对saltstatck和ansible工具进行比较
Ansible基于SSH协议传输数据Saltstack使用消息队列zeroMQ传输数据.
ZMQ是什么
类似于Socket的一系列接口但区别是普通的socket是端到端的1:1的关系,而ZMQ是NM 关系
socket 是什么
socket就是套接字是源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。
【配置的比较】
saltstatck 跟zabbix类似需要在每台机器上安装客户端配置稍麻烦
ansible不需要客户端只需要在配置服务端即可
但是saltstatck有一个salt-ssh 功能可以轻易解决上述客户端安装麻烦的问题
(参考:http://www.0550go.com/automation-deployment/saltstack/saltstack-salt-ssh.html )
而且ansible岁不需要客户端但是却需要python版本在2.6+。
【个人的选择】
结论一在超大量服务器要求高效时选择saltstatck
结论二在服务器数量少时选择ansible配置简单
主要是根据企业服务的需求还有自身的喜好总之精通一门就好