本节书摘来自华章出版社《ansible权威指南 》一书中的第3章,第3.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第2章介绍了ansible的各项元素、系列命令、inventory基础,以及ansible与正则的结合使用,这些内容是掌握ansible的基础,请务必熟练掌握。在前两章的基础上,本章为大家介绍ansible ad-hoc命令集,通过模拟真实的企业案例和应用场景更深入地了解ansible。作为ansible最常用的命令,本节内容显得尤为重要。
所谓ad-hoc,简而言之是“临时命令”,英文中作为形容词有“特别的,临时”的含义。ad-hoc只是官方对ansible命令的一种称谓,大家按各自习惯称呼即可。笔者平时一般称之为“临时操作”或ansible命令。
从功能上讲,ad-hoc是相对ansible-playbook而言的,ansible提供两种完成任务方式:一种是ad-hoc命令集,即命令ansible,另外一种就是ansible-playbook了,即命令ansible-playbook。前者更注重于解决一些简单或者平时工作中临时遇到的任务,相当于linux系统命令行下的shell命令,后者更适合于解决复杂或需固化下来的任务,相当于linux系统的shell scripts。通常,深入ansible是从接触ansible-playbook开始的,灵活运用ansible-playbook才能更好地体会到ansible的强大所在。
具体来讲,什么样的场景下我们需要用到ad-hoc,什么样的情况下需要使用ansible-playbook呢?
(1)需要使用ad-hoc的场景
情景1:
节假日将至,我们需要关闭所有不必要的服务器,并对所有服务器进行节前健康检查。
情景2:
临时更新apache &nginx的配置文件,且需同时将其分发至所有需更新该配置的web服务器。
(2)需要使用ansible-playbook的场景
新购置的服务器安装完系统后需做一系列固化的初始化工作,诸如:定制防火墙策略、添加ntp时间同步配置、添加epel源等。
业务侧每周定期对生产环境发布更新程序代码。
其实两者之间关系用急行军(ad-hoc)和远征军(ansible-playbook)来形容可能更容易理解。急行军需轻装上阵,注重灵活机动;远征军需稳扎稳打,注重长远规划。正如我们上面所讲,ad-hoc更注重于解决一些简单或者平时工作中临时遇到的任务,ansible-playbook更适合于解决复杂的或需固化下来的任务。后面的章节中我们会介绍大量企业实战场景,相信大家会有更深刻的体会。