Ansible
將一個劇本導入另一個沒有定義主機的劇本
我正在嘗試使用 Ansible 創建一個劇本,其中包含不同的劇本作為其任務之一。
澄清一下,該劇本旨在部署 Linux 伺服器,其中一個步驟是複製一個 git 儲存庫。
導入時(我嘗試使用
import_tasks
、include_tasks
、import_playbook
和include_playbook
),Ansible 返回以下錯誤:
ERROR! conflicting action statements: hosts, gather_facts
果然,當我編輯 git playbook 並遠端執行
hosts
語句時,導入工作沒有問題。但是,git 複製也意味著獨立執行(以保持所述儲存庫同步),因此也必須包含該
hosts
指令。我本質上正在尋找的是一種導入劇本任務的方法,使用導入劇本的主機而不是導入的劇本的主機。
我可以簡單地從 git playbook 中刪除 hosts 指令並通過其他一些 playbook 呼叫它,但我想知道是否有更簡單的方法,或者我只是缺少正確的語法。
有沒有一種簡單的方法可以在沒有主機的情況下導入劇本的任務?
謝謝!
hosts:
並且gather_facts:
只能存在於劇本的最頂層。你應該要麼
- 將您的劇本編寫為連接到目標伺服器的角色
- 刪除有衝突的陳述並
delegate_to:
在包含您的劇本任務時使用。