作为一个系统运维人员,应该至少掌握一种配置管理工具,此系列文章根据《奔跑吧 Ansible》一书精简而来,记录了自己对教程的理解。

溯源 Ansible

Ansible 一词是由作者 Michael DeHaan 从《Ender's Game》一书中借鉴而来的,在这本书中,Ansible 是一种超光速通讯装置,可以跨越任何距离同时控制无数飞船,就好像在我们的世界控制海量远程服务器一样 。

Ansible不仅是配置管理的利器,也是用于部署的神兵,对于负责运维的人来说,用一个简单的工具就可以同时完成配置管理和部署的工作,生活瞬间变得美好了。

Ansible的精妙设计

  • 易读的语法:Ansible 的 playbook 语法是基于 YAML 开发的,它是一种以易于人类读写为设计理念的数据格式语言,某种程度上说,YAML 之于 JSON 就好像 Markdown 之于 HTML 。
  • 远程主机无须安装任何依赖:被控端需要安装 SSH 和 Python 2.5或以上的版本,其它不需要任何 agent 程序;主控端需要安装 SSH 和 Python 2.6 或更高版本,仅此而已 。
  • 基于推送模式:基于推送模式的方式最显著的优点是,直接由你来控制变更在服务器上发生的时间,你不需要等着计时器过期。
  • 幂等性:Ansible 的模块实现的行为是幂等性的,只需要运行一次 playbook 就可以将每台服务器都置为期望的状态。幂等性是个非常赞的特性,因为它意味着向同一台服务器多次执行同一个 playbook 是安全的 。相对于一般运维团队自己编写的 shell 脚本来说,这是一个非常大的优势。运维团队自己编写的脚本在第二次执行的时候很可能会带来不一样的(并且很可能是意外的)影响 。

Ansible 太过简单了么

任何将使用 Ansible 与使用 Shell 脚本划等号的人,大概都没有不得不维护一个由 Shell 编写的重要程序的经历。如果让我来选择用于完成配置管理任务的工具,我永远都会选择 Ansible 而不是 Shell 脚本 。

我需要具备哪些知识

说实话,其实能够掌握 RHCSA 的知识,使用 Ansible 就没有太大问题。当然具备 RHCE 更好,哈哈!

我应该把 ansible.cfg 文件放到哪里:ansible按照如下位置和顺序查找 ansible.cfg 文件:

  1. ANSIBLE_CONFIG 环境变量所指定的文件;
  2. ./ansible.cfg (当前目录下);
  3. ~/.ansible.cfg (主目录下);
  4. /etc/ansible/ansible.cfg
    我通常把 ansible.cfg 与 playbook 一起放到当前目录,这样我就可以把它和 playbook 放到同一个版本控制仓库中管理。

原书中使用 vagrant 做为实验环境,我这里就使用 VM 开几台测试机就好了。(不折腾了)

posted on 2016-09-20 13:51  nhy  阅读(244)  评论(0编辑  收藏  举报