2014-01-17 91 views
6

讓我們來想象一個具有以下角色的劇本:base,monitoring,nginx和另一個只有base和nginx的劇本。Ansible,如果劇本包括角色,則運行任務

現在我想監視角色只有在playbook包含nginx角色時才運行任務,因爲對於監控nginx我必須將一些不同的配置傳遞給監控服務。

如何執行一個任務依賴於另一個角色的存在?

+1

不直接回答你的問題,但作爲一種解決方法,可能會使監測_nginx_角色的一部分?你會想要不受監控的服務器嗎? – Mxx

+0

哈,釘它:) – nvartolomei

回答

2

雖然我在評論中的解決方法可能適用於您,但我覺得它仍然不是最好的方法。它不是模塊化的。例如,在您更改監控系統的情況下,您需要進入每個角色並檢查它是否包含監控組件並更新...不是最優方式。

也許一個更好的辦法是仍包括獨立監控作用,但使用playbook conditionals執行特定的任務。例如,nginx監控任務將僅執行when此服務器是您的[webservers]組的一部分。或者當某個變量設置爲特定值或者其他適當條件滿足時。

+0

這樣就變成了一團糟 – nvartolomei