我試圖讓這隻適用於我的開發和九頭蛇服務器。我有2個主機文件和主機。 dev-all主機組是 [dev-all:children] dev-group1 dev-group2
Ansible - 使用邏輯OR來匹配主機組
hydra組只包含一個服務器,但位於不同的主機文件中。當我運行ansible時,我使用類似這樣的命令爲hydra組ansible-playbook -i environments/hydra site.yml
和dev組,我使用這個命令ansible-playbook -i environments/dev site.yml
。
我的問題是,當我打電話給開發人員時,只有在我打電話給開發人員時才應用於Hydra的條件,但我打電話給開發人員時,如何獲得此項?這將幫助我避免添加此組來在另一個主機文件中生成服務器。 dev-all組包含dev文件中的許多dev服務器組,我基本上試圖從主機文件中包含所有這些組,以便讓dev-all:children組抓取所有這些組。
我似乎無法讓他們匹配當OR條件。也許有更好的方法來編寫when語句。
- name: add dev environment sudo user group group: name=dev_sudo state=present gid=8002 tags: - groups - sudo-group when: (inventory_hostname in groups["dev-all"]) or (inventory_hostname in groups['hydra'])
這工作!謝謝!有沒有辦法將它應用到整個任務文件而不是特定的實例?就像有一個main.yml,hydra.yml,dev-web1.yml等。那樣的話,你不必像上面那樣對文件中的所有內容進行條件處理? –
製作單獨的yml文件並在main.yml中使用'include' +'when'。 –
你能舉個例子嗎?我明白'include'放在main.yml中,但是如何獲得包含的yml文件中所有項目的'when'條件? –