设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

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

2013-10-16 15:02| 发布者: joejoe0332| 查看: 4038| 评论: 0|原作者: 51CTO|来自: 51CTO

摘要:   大部分服务器自动化及流程解决方案,例如Puppet与Chef,都依赖于特定方案编码、Web UI以及命令行工具等要素的综合体,从而使整套体系正常运转。Ansible则有所不同。尽管也能够支持Web UI,Ansible在Unix管理员的 ...

  我们也可以在Playbook中使用各种变量:


  • —  
  • - hosts: webservers 
  • remote_user: root 
  • vars: 
  • ntp_service: ’ntpd’ 
  • tasks: 
  • - service: name={{ ntp_service }} state=started 
  • sudo: yes 


  除了前面列举的例子之外,我们还可以使用模板。大家可以在建立的模板中引用变量,而后从Playbook当中调用这些模板、从而构建需要的文件。最后,为Apache配置创建一个模板文件,将该配置利用Playbook所指定的变量添加到客户机当中:

  • template: src=/srv/templates/apache.conf dest=/etc/httpd/conf.d/{{ vhost }}.conf 


  当然,我们可能还需要在稍后重新启动服务——这一点可以通过notify及handler函数实现。


  • notify: 
  •  
  • restart apache 
  • handlers: 
  • - name: restart apache 
  • service: name=apache state=restarted 


  在Playbook中包含上述命令能够确保虚拟主机配置文件被保存在客户机中的正确位置,而后重启Apache、从而使全部配置变更正常生效。


  与大家的期望相同,我们可以在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。


While Ansible uses paramiko, a Python SSH2 implementation, or native SSH to communicate with clients, there can be a scalability issue when moving into large numbers of clients. To address this, Ansible 1.3 offers an accelerate mode that launches a daemon over SSH that provides AES-encrypted communication directly with the client. This feature can speed up client communications substantially when measured in large-scale implementations as compared to paramiko or native SSH.


   由于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当中将用户及群组与全局组织进行映射。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部