ansible-min.png

Ansible 在 1.2 版本以后开始支持 role,它与我们日常使用的 playbook 没有什么区别,只不过对目录结构进行了一些规范。我们可以对一个很复杂的 playbook 进行拆分,比如将任务都放到 tasks/ 目录中、将触发处理程序都放到 handlers/ 目录中等。如果以后需要对 role 进行修改或者调整,只需修改相应的文件即可。如果还想把这个 role 分享给其它人,也只需要分享整个目录即可,从而实现重用的目的。role 只是关于一个功能的集合,我们使用它时,只需要编写一个 playbook 通过 roles 关键字去调用我们写好的 role 即可

ansible-min.png

playbook 文件包含了多个 play,每个 play 可以应用于一个主机组或单个主机。而每个 play 又包含一系列编排后的 tasks(按顺序执行),每个 task 其实就是执行一次 Ad Hoc 临时命令,从根本上来讲,所谓的 task 无非就是调用了 Ansible 的一个模块。如果你熟悉 Python 中的 Flask 框架,它默认的模板引擎就是 Jinja2,那么你学习本文内容时会感觉非常简单

ansible-min.png

Ansible 是使用了 Python 作为开发语言,简单易用、功能强大的自动化运维管理工具,可以出色地完成配置管理、应用部署、任务编排等多方面工作。与 Puppet、Saltstack 等其它自动化产品相比较,Ansible 无需在远程服务器上安装 agent 客户端代理,它只依赖 SSH 连接,而且它的学习曲线非常低