Ansible

將一個劇本導入另一個沒有定義主機的劇本

  • July 14, 2021

我正在嘗試使用 Ansible 創建一個劇本,其中包含不同的劇本作為其任務之一。

澄清一下,該劇本旨在部署 Linux 伺服器,其中一個步驟是複製一個 git 儲存庫。

導入時(我嘗試使用import_tasksinclude_tasksimport_playbookinclude_playbook),Ansible 返回以下錯誤:

ERROR! conflicting action statements: hosts, gather_facts

果然,當我編輯 git playbook 並遠端執行hosts語句時,導入工作沒有問題。

但是,git 複製也意味著獨立執行(以保持所述儲存庫同步),因此也必須包含該hosts指令。

我本質上正在尋找的是一種導入劇本任務的方法,使用導入劇本的主機而不是導入的劇本的主機。

我可以簡單地從 git playbook 中刪除 hosts 指令並通過其他一些 playbook 呼叫它,但我想知道是否有更簡單的方法,或者我只是缺少正確的語法。

有沒有一種簡單的方法可以在沒有主機的情況下導入劇本的任務?

謝謝!

hosts:並且gather_facts:只能存在於劇本的最頂層。

你應該要麼

  1. 將您的劇本編寫為連接到目標伺服器的角色
  2. 刪除有衝突的陳述並delegate_to:在包含您的劇本任務時使用。

引用自:https://unix.stackexchange.com/questions/658361