Ansible 项目最佳实践
关于 Ansible 项目的最佳实践,这里简单总结了一些经验供参考。
1)像管理代码一样管理 Ansible 资源:对 Ansible 相关资源做好版本迭代管理。先从能完成基本功能的 Playbook 和静态 inventory 做起。
2)制定代码规范,保持一致性,并强制使用,这些规范包括但不限于:tag 规范、空格规范、tasks 命名规范、plays 命名规范、变量命名规范、roles 命名规范、Ansible 项目目录结构规范等。
3)从一个 Git 库开始,但是当积累到一定阶段时,需要分而治之。前期:可以用一个 git repo 管理所有代码。后期:每个 role 分别用不同的 git repo 管理,细化到每个 play,每个 task。
4)使用容易理解且有意义的主机别名,而不是类似 IP 或者 DNS 类型的主机名。
5)主机组分得越细越好,这样可以避免在 Playbook 中使用很多条件进行判断。
6)在可能的情况下,尽量可能多地使用动态 inventory:保持自动同步。降低人为误操作的概率。变更效率更高。inventory 专人管理。
7)使用有意义的变量名,不仅能减少变量冲突,还能提高 Playbook 的易读性。
8)通过给变量设置详细的前缀,增加变量可读性。
9)建立变量定义的途径规范:不同场景下使用合适的位置来设置变量。尽量将 task 和变量分离管理,减少耦合,从而精简变量定义的个数。变量不要随意存放,要使用习惯的方法统一管理。
10)task 代码格式要规范。
11)要尽可能地增加 task 名称的可读性。
12)尽量多使用 block 语法来处理异常执行的结果。
13)充分使用 Ansible 提供的多种机制来增强命令行的交互性和辅助调试出现的问题。
14)在执行 Ansible 命令前使用下列命令来确认本次操作的对象信息和要执行的任务信息:
15)有些场景下可以不使用 inventory 文件而直接在命令行里使用主机名。
16)command 和 shell 能不用就不用,优先使用 Ansible 自带的模块。
希望以上的一些 tips 可以给大家带来帮助,更多的还是在实际生产中总结。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/7099e2a26de8ed24ad13555fc】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论