作者:陈栋,新炬网络高级技术专家。
说到ansible,无论工程狮还是程序猿,了解的人都会提到ansible通过ssh连接与远端机器进行通信,远端机器无需安装agent。那事实是否如此,就让我们一同来进行探讨。
看似无条件,实则有条件的远端要求:
从官方文档中我们可以了解到。Ansible采用python语言开发,采用ssh通信,不需要安装代理,没有数据库,同时没有后台驻留程序。但一切的前提是你安装的是一个正常无精简的linux操作系统,因为它仍然需要远端机器上有sftp或scp,同时至少安装了python2.4以上版本,而且在python2.5及以下版本还需要安装python的插件python-simplejson,才能使用更全面的功能。对操作系统有开启selinux,还需要安装插件libselinux-python。另外,对于windows操作系统,那其实就更加有要求。不仅要求powershell至少是3.0或以上版本,还需要安装pywinrm。顿时看着平台上一大堆的windows 2003,只能泪流满面了。
欣慰的服务中心端:
说完了远端的要求,再来看服务中心端的要求。简简单单,揽括了RedHat、Debian、OS X和BSDS(Windows除外)等安装有python2.6的任何机器上运行。脑子了立刻想到的是,便捷性的ansible中心控制端,对新项目中大量繁复的集成工作或许是一个很好的工具。
Ansible的架构:
1、Connation Plugins:基于ssh,负责与远端机器进行通信。
2、Host Inventory:定义管理的主机或主机组。
3、Moudule:各个核心模块和自定义模块。
4、Plugins:借助插件完成记录日志、邮件等。
5、PlayBooks:简单的翻译就是剧本,真正实现简化配置管理和多机器部署的基础。
Ansible的核心模块命令:
1、Ansible-doc命令
查询ansible 模块的详细信息
Ansible-doc “模块名称”
例:
2、ping模块命令
测试远程机器的通信状态
Ansible 主机 –m ping
例:
3、setup模块命令
查看远程主机的一些基本信息
Ansible 主机 –m setup
例:
4、command模块命令
在远程机器上执行命令
Ansible 主机 –m command –a “命令”
例:
5、raw模块命令
类似command模块,支持管道传递
Ansible 主机 –m raw –a “命令”
例:
6、shell模块命令
执行远程机器上的shell/python脚本
7、script模块命令
在远程机器执行主控上的shell/python脚本
ansible与其它工具的选择:
由于网上大把的横向对比,在此就不再重复对比。只根据个人经验,谈谈面对各类配置管理工具,我们到底该如何选择。
在讲述如何选择选择之前,先说一下为什么要使用配置管理工具。
首先,当然因为有数据中心规模越来越大,通过配置管理工具,提高工作效率,使配置管理更加简单化,从而将时间花在更高级别的事情上去。
其次,通过配置管理工具,可以降低更新错误、操作错误、防止不法行为、甚至为启用审计功能。
最后,从企业层面上,可以从几种方式评估使用自动化的配置管理,其所能带来的收益和好处。
目前,市面上流行的开源配置管理工具主要为chef、puppet、saltstack和本文介绍的ansible。
可能有人会说,chef和puppet重点在配置上,saltstack和ansible重点在配置管理上。然后就是各自开发语言、工具的学习、各自的优缺点等等。但其实,做为一名运维人员个人认为,在配置管理工具的选择上,不外乎以下三点。
第一,目前是否已经有自己的配置管理工具,是否能满足自己目前的需求。如果都满足,何必因为切磨杀驴。如果不满足,是否可以通过定制开发,通过插件等方式去完善工具。而不是一棍子打死,替换了目前的配置管理工具。毕竟培养一个人甚至一个团队重新去研究、定制和使用一个目前符合需求的工具,所花的时间和成本是无形的。
第二,对于之前没有配置管理工具,首先需要明确自己的需求,其次要了解自身运维团队的优势,然后还要的运维环境和基础架构。如果都了解了,那么从工具的学习、到后续开发、再到投入试用,到最后的正式落地。那么如何选择其实很清晰了。
第三,如何你说自己的还是不清楚该如何选择。那就一一进行说明。开发能力足够强大,更加注重自己的需求通过开发实现,那么chef和puppet都是不错的选择。能通过自主开发去管理业务应用的配置。其中puppet还是目前这四款工具中最成熟的。相反,saltstack和ansible更符合运维和系统管理员的要求,两者相比chef和puppet更精简,saltstack拥有高扩展性和强大功能。Ansible也一样拥有强大功能,同时最重要的一点,没有代理、不需要数据库,也没有后台驻留程序。可以让你更快更迅速的在各种繁杂的基础架构去迅速推广。
总结
chef、puppet、saltstack和ansible都是目前流行的配置管理工具,为什么以ansible来展开,除了目前很流行,也是因为它有自己的优势,是一款不可多得的好工具。学习的目的在于学以致用,最后希望本文对你有所帮助和启迪。