Ansible

如何在單個 ansible playbook 中為不同的主機執行不同的角色?

  • January 19, 2018

我有 3 個 ansible 劇本。

my_ansible
├── hosts
├── play1.yaml
├── play2.yaml
├── play3.yaml
└── roles
   ├── role1
   ├── role2
   └── role3

主機

[play1]
host1

[play2]
host2

[play3]
host3

現在,當我跑步時,我play3想繼續跑步play2(role2)host2``play1(role1)``host1

我檢查了role-dependency,但這適用於同一主機,這意味著,如果我添加for and role-dependency,那麼這兩個角色將針對.role3``role1``role2``host3

我想確保,只play1執行,只執行,只執行。host1``play2``host2``play3``host3

我試圖找到playbook依賴關係,但還沒有運氣。

如果有更好的方法來解決這個問題,那麼我也準備好採用這種方法。

我想實現這一點的最簡單方法是創建一個主劇本並在那裡定義劇本的順序。

可以在主劇本中包含劇本。

$$ … $$列出的每個劇本中的劇本和任務將按照它們列出的順序執行,就像它們在這裡直接定義一樣。

請參閱有關 playbook 重用的 Ansible 文件,包括

為了實現這一目標,play3我們play2play1需要像這樣定義一個主劇本:

---
- import_playbook: play3.yml
- import_playbook: play2.yml
- import_playbook: play1.yml

引用自:https://serverfault.com/questions/891794