当前位置: 首页 > 技术与资源 > 技术分享 > 正文

从ansible,聊聊配置管理工具

2015-12-02 18:26:26

作者:陈栋新炬网络高级技术专家。


说到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的架构:


从ansible聊聊配置管理工具-1

1、Connation Plugins:基于ssh,负责与远端机器进行通信。


2、Host Inventory:定义管理的主机或主机组。


3、Moudule:各个核心模块和自定义模块。


4、Plugins:借助插件完成记录日志、邮件等。


5、PlayBooks:简单的翻译就是剧本,真正实现简化配置管理和多机器部署的基础。


Ansible的核心模块命令:


1、Ansible-doc命令


查询ansible 模块的详细信息


Ansible-doc “模块名称”


例:


从ansible聊聊配置管理工具-2

2、ping模块命令


测试远程机器的通信状态


Ansible 主机 –m ping


例:


从ansible聊聊配置管理工具-3

3、setup模块命令


查看远程主机的一些基本信息


Ansible 主机 –m setup


例:


从ansible聊聊配置管理工具-4

4、command模块命令


在远程机器上执行命令


Ansible 主机 –m command –a “命令”


例:


从ansible聊聊配置管理工具-5

5、raw模块命令


类似command模块,支持管道传递


Ansible 主机 –m raw –a “命令”


例:


从ansible聊聊配置管理工具-6

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来展开,除了目前很流行,也是因为它有自己的优势,是一款不可多得的好工具。学习的目的在于学以致用,最后希望本文对你有所帮助和启迪。

上一篇:以企业入侵检测日志分析为场景谈大数据安全
下一篇:LINUX类主机JAVA应用程序占用CPU、内存过高分析手段