• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Ansible第六篇:Playbook生产实践

Ansible 彭东稳 8年前 (2016-09-14) 37122次浏览 已收录 0个评论

在生产环境中,ansible-playbook的主要作用:

第一、就是批量执行操作。

第二、就是快速部署环境。

所以业务稍微大一点的环境中,ansible-playbook一般都是以业务为基准进行编排,下面介绍介绍以业务为基准的ansible-playbook编排架构,并且能够随时转换为以功能组件为一个playbook。

Ansible第六篇:Playbook生产实践

由上图可以看到,每个业务(business-A)为一个playbook,另外创建了一个系统初始化时需要使用的playbook(common),同时创建一个base_roles目录,里面存放各种业务组件,每一个业务组件也都是一个playbook。

这样的好处:

1)一个新业务business-A上线时只需要执行对应业务的playbook即可,如果此业务中用到php、nginx、tomcat等组件,那么在business-A中site.yml引用对应的roles即可,千万别忘记在引用roles时给每个roles定义一个tags。另外,通用组件里面的配置参数肯定是每个业务的不同有不同的需求,那么每个业务可以根据自己的需要在group_vars里面定义变量即可,还可能根据业务不同可能需要不同的扩展插件以及其他配置,那么这些需求都可以定义在business-A这个playbook中。

2)当每个业务中定义完所需要的roles后(必须给tags),如果只想执行某个roles或者执行某个操作,只需要指定对应roles的tags即可或者直接执行base_roles目录中的roles。

3)如果只需要执行一个命令操作,或者多个操作时,我们可以自由选择ansible或者直接使用ansible-playbook,只需要在你对应的业务下面创建一个跟site.yml平级的.yml文件即可,把你需要的操作定义进去,然后使用ansible-playbook指定这个文件。

4)Ansible默认把/etc/ansible/hosts文件作为inventory,如果自定义使用-i即可,所以建议建立一个目录里面存放inventory文件,每个人根据自己的需求添加inventory文件,然后所有的playbook的hosts都指定为all,执行playbook时都使用-i指定自己的inventory文件。

5)对于common这个playbook,其最大的作用就是一个新上线的系统,你只需要执行以下这个playbook后,那么所有的系统初始化工作都可以完成,当然你需要把初始化的脚本和执行命令提前写好。common这个playbook也是执行base_roles中的一些组件,比如zabbix组件。

我目前工作中接触到的最多的大概就是这些需求了,另外需要注意的是ansible默认是把/etc/ansible/hosts作为默认inventory,把/etc/ansible/roles作为默认的roles使用,如果你需要使用这种模式进行你的ansible编排,那么你需要把base_roles作为默认的roles,需要修改ansible的配置文件ansible.cfg。下面给出了一个创建实例:

Ansible第六篇:Playbook生产实践

框架已经给出来了,可以按照这个框架去走了,如何编排任务可以参考前面的文章。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (11)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!