技术开发 频道

Ansible:老牌Unix管理员的梦想级方案

  与大家的期望相同,我们可以在Playbook中包含文件。我们可以创建一个包含全部必要handler的文件,而后将该文件添加到新Playbook当中。如此一来,我们就能够集中对所有handler进行配置、同时又确保它们适用于全部Playbook。

  更进一步,大家还可以通过配置角色在Playbook中收集handler、任务以及各种变量,从而供其它角色引用。举例来说,大家可能在数据库服务器的日常使用中涉及一系列handler与任务,这时就需要在数据库角色中包含这些文件,而后将角色添加到Playbook当中以容纳全部配置元素。大家还可以根据需要对关联性进行配置,从而使其它角色引用现有配置方案。

  总而言之,Playbook的创建过程并不太直观,但精心调教出来的Playbook也确实能带来出色的扩展能力与顺畅的组织方式。值得一提的是,Playbookr运行非常便捷:

[ansible@ansible1: ~]$ ansible-playbook myplaybook.yml -f 10

  这条命令将并行运行十次Playbook的myplaybook.yml文件,也就是说服务器将一次性与十台客户机连接并在其中运行myplaybook.yml。

  由于Ansible使用的是paramiko,一种Python SSH2方案,或者原生SSH与客户机通信,因此当对应的客户机数量过大时有可能出现扩展性问题。为了解决这一弊端,Ansible 1.3版本提供一套加速模式,通过在SSH上启动后台程序实现与客户机之间的直接加密通信。

  Ansible模块

  Ansible当中包含一系列模块,旨在实现其它扩展功能,例如针对云服务(以Amazon EC2为代表)的配置与管理以及针对各主流数据库服务器、文件操作以及网络设备的专用模块等。大家还可以通过创建自己的模块来满足特定需求。我们几乎能够使用任何一种编程语言来创建此类模块,除了Python之外、还包括Perl、Bash乃至C++。

  我们可以通过编码让模块接纳变量,并要求其输出JSON对象以指明包括命令在内的各种能够在运行过程中收集到的相关状态信息。

  AnsibleWorks AWX

  Ansible也支持一套特定的Web UI,这就是AnsibleWorks AWX。这是一套付费解决方案,能够围绕Ansible提供清晰而简洁的Web UI。不过这套Web UI无法在默认状态下被直接添加到Ansible配置当中;如果大家已经在服务器上广泛安装了Ansible,那么直接将AWX添加进去并不能立刻获得Web样式的预期结构。相反,大家可以利用命令行工具将现有Ansible Inventory导入到AWX当中——如果需要让命令行与AWX保持一致,我们还需要在此后不断对二者加以同步。

  一旦安装并开始运行AWX,大家可以根据自己的基础设施状况对用户、团队、Inventory、项目以及工作模板等进行配置。不过需要注意的是,大家必须以新增形式添加这些对象,它们并不以那些包含着全部主机及配置的现有配置文件为基础。AWX还提供RESTful API,并集成了LDAP与Active Directory以实现验证及授权功能。这种集成能够帮助大家更便捷地在UI当中将用户及群组与全局组织进行映射。

  AWX Web UI提供的界面简洁而且比较直观,执行速度相当出色。该UI严格基于Playbook,因此无法使用任何命令行功能。我们需要通过创建Playbook来描述自己想要执行的命令行操作,然后将其添加到服务器中的特定目录之下。接下来在UI中的工作模板之下访问对应Playbook,而后将其作为Inventory的附加组件,这样包含在内的工作就能顺利进行了。

  这套Web UI确实具备一定功能性,但它既不够完善也无法作用于命令行界面。举例来说,大家不能通过这套Web UI实现工作调度——相反,各位倒是可以很轻松地通过命令行中的cron满足这类需要。Playbook可以运行在Web UI与命令行两种环境下,因此如果大家的命令行安装体积太过庞大,不妨考虑将自己的Playbook换个平台,这几乎不会带来什么影响。当然,结构的其它部分仍然需要通过同步实现复制。

  AnsibleWorks AWX还借助一系列Ansible模块带来基于Web的简单云服务集成效果,因此大家可以为内部用户及团队提供一套Web UI,从而通过本地管理控制台支撑起公共或者私有云服务,并利用本地LDAP或者AD基础设施实现身份验证与授权。通过这种方式,AWX完全能够充当一套针对内部客户的自助门户。

  Ansible实际效果

  长话短说,Ansible是一款极度化且易于设置及运行的自动化工具。其Web UI还算实用,但对于日常操作之外的深层任务,命令行的扩展性更好、效率也更高。

  Ansible并未内置任何高可用性机制,但该方案的调度简洁设计允许用户轻松通过多套系统控制所有客户机。只要在各服务器上采用丰富的“Playbook”及配置元素,高可用性倒不是什么大问题。

  缺乏对Windows环境的支持导致Ansible在互操作性环节得分偏低,但需要强调的是,这是一款真正为Linux及Unix管理所量身打造的工具,所以这也不算什么大毛病。

  Ansible的设计与实际效果证明,这是一款专为Unix老鸟管理员打造的利器。Ansible不走Windows路线,而且也没有提供太多点缀和可有可无的小玩意。总而言之,这是一款确实能够快速简便打理Linux及Unix系统的优秀产品。

0