2016-10-04 25 views
0

我正在努力遵循設計我的劇本的最佳實踐。所以劇本文件本身看起來像這樣:如何在角色之間共享任務時正確地構建我的直觀劇本

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

現在有一個任務check_proxy_and_firewalls,我想在dbserers以及在角色來執行。

我該如何正確地構造它?我發現所有的「best_practice」指南似乎都沒有考慮這種情況。

我可以簡單地添加一個文件common_tasks/check_proxy_and_firewalls.yml並將其包含在我需要的角色中。那是怎麼做到的?

回答

0

重複使用其他劇本中的任務的正確方法就像您所說的那樣,使用include。

假設您想重用播放或劇本之間的任務列表。您可以使用包含文件來執行此操作。使用包含的任務列表是定義系統將要履行的角色的好方法。

來源:Ansible Playbook Roles

要包含一個文件只是添加到您的劇本:

- include: path/to/task.yml 

構建你的角色在很大程度上取決於你使用Ansible什麼。例如,我管理Windows和Linux服務器,所以我的角色結構是這樣的:

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

你的將是根據什麼用ansible你的目標是不同的。

+0

好的,你在哪裏放置一個屬於多個角色的任務? – Nathan

+0

共享任務不存在全部位置,就像本身沒有一個位置一樣。就我個人而言,我會將它們放置在需要儘可能少擊鍵的位置以包含在劇本中。因此,如shared/tasks/main.yml – Avalon

+0

此外,如果這只是一次性或類似的,我可能甚至不打擾將它從角色本身分開,我只是從我最初創建它的任何角色包括該文件。 – Avalon

相關問題