如何在角色之间共享任务时正确构建我的ansible playbook

时间:2016-10-04 16:33:55

标签: ansible dry

我正在努力设计我的ansible剧本中的最佳实践。所以playbook文件本身如下:

- hosts: ...
roles:
 - dbservers
 - webservers
 - ...

现在我要在check_proxy_and_firewalls以及dbserers角色中执行任务webservers

我如何正确地构建它?所有" best_practice"我发现似乎没有考虑这种情况。

我可以简单地添加一个文件common_tasks/check_proxy_and_firewalls.yml并将其包含在我需要它的角色中。这是怎么做的?

1 个答案:

答案 0 :(得分:0)

正如您所说,通过使用包含来重用其他剧本中的任务的正确方法。

  

假设您要在播放或剧本之间重复使用任务列表。您可以使用包含文件来执行此操作。使用包含的任务列表是定义系统将要实现的角色的好方法。

来自:Ansible Playbook Roles

要包含文件,只需将其添加到您的剧本中:

  - include: path/to/task.yml

构建角色很大程度上取决于您使用Ansible的目的。例如,我管理Windows和Linux服务器,因此我的角色结构如下:

roles
  windows
    <some_function>
       tasks
       vars
  linux
    <some_function>
       tasks
       vars

根据您对ansible的目标,您的情况会有所不同。