我創建了一個角色,我在其中定義了所有合理的任務。另外,我在庫存中有主機A和主機B.是否有可能在主機A上執行90%的任務,在主機B上執行10%的任務?我的Ansible控制器是主機C.在不同的主機上執行Ansible任務
回答
我認爲這樣做的第一種方法是基於庫存的條件。
在清單中爲創建一個組,併爲B.一組,我會調用這些group_A和group_B
# inventory
[group_A]
192.168.1.20
[group_B]
192.168.1.30
然後使用條件上你的任務
- name: run this on A
debug: msg="this runs only on A
when: "'group_A' in {{group_names}}"
- name: run this on B
debug: msg="this runs only on B
when: "'group_B' in {{group_names}}"
根據有多少任務你有,對每個任務都附加條件可能太多了,所以你可以在包含條件上使用,如下所示:
文件結構:
-tasks
|- main.yml
|- A_tasks.yml
|- B_tasks.yml
main.yml:
- include: A_tasks.yml
when: "'group_A' in {{group_names}}"
- include: B_tasks.yml
when: "'group_B' in {{group_names}}"
A_tasks.yml:
- name: run on A
debug: msg="this only runs on A"
B_tasks.yml:
- name: run on B
debug: msg="this only runs on B"
這可能在舊版本的Ansible中正常工作,但至少從版本2.4.2.0開始,條件應該是'when:'group_names「'中的'group_A'。 –
如果你正在分裂的所有任務在一個兩個不同主機之間的角色,那麼這兩個主機都沒有這個角色,是嗎?我想說,當你真的有兩個角色時,將所有這些任務集中到一個角色中,這是對角色系統的濫用。
如果您有多臺主機As,會發生什麼情況?怎麼樣多個主機Bs?
在我看來,你實際上並不想在這裏使用角色 - 你只想使用普通的ol劇本。
- hosts: A
tasks:
[...]
- hosts: B
tasks:
[...]
劇本是按照特定的順序定義了一系列的行動,而你的「做B本的東西做這個東西之後只A」是。
我傾向於同意,但理論上您可以設計一個用於設置Hadoop集羣的角色,並且您需要在主服務器和從服務器上運行不同的任務。這超出了配置管理到基礎架構部署,但它在Ansible中得到了支持。 – smiller171
- 1. Ansible在不同的主機上執行每個角色
- 2. 在「server_1」或「server_2」以外的主機上運行Ansible任務
- 3. Bamboo在不同的機器上執行任務
- 4. Ansible Tower:在不同的服務器上執行劇本
- 5. Ansible playbook>如何執行與不同主機不同的角色
- 6. 在一個劇本中執行多主機上的任務
- 7. 是否有可能在不同主機的playbbok中執行每個任務?
- 8. 上的特定主機組運行ansible
- 9. 試圖使用ansible執行任務
- 10. Can Capistrano可以連續執行主機上的任務嗎?
- 11. 運行在EC2上instanse ansible任務
- 12. Ansible - 以with_together方式對主機運行任務
- 13. 從Ansible配置的Ansible任務可以在沒有SSH的遠程主機上運行?
- 14. 使用Ansible主機引發`--limit`不匹配任何主機
- 15. Ansible任務已授權的主機上運行的問題時,文件名匹配的主機名
- 16. Ansible:我如何在不同的主機上部署並行角色
- 17. 不同的執行任務的方式
- 18. 對主機組運行Ansible
- 19. 在iOS中的不同線程上執行後臺任務
- 20. Ansible不同的主機,不同的動作
- 21. 裝載機不執行任務異步
- 22. 在Windows上的本地主機上運行Ansible-Playbook
- 23. Pentaho的 - 執行不同的主機上simultaneouslyl存儲過程
- 24. Ansible使用當前主機的任務作爲變量
- 25. Ansible如何比較同一任務中多個主機的輸出
- 26. 如何在至少一個主機上成功完成Ansible任務
- 27. Ansible劇本:在不同的主機上在同組同一任務的多次運行後註冊變量的值
- 28. 動態gradle複製任務不執行任務主體
- 29. 在MapReduce中,如何在多臺機器上執行相同的reduce任務?
- 30. 同步grunt.js任務執行
對於主機A而言,90%的任務和主機B上的10個任務意味着什麼? – shaps
我在主機A上部署堆棧,我想在主機B上執行配置後腳本。這些腳本應該從可控制器(主機C)或從主機A到主機B,但我不確定如何實現。 – tgcloud
但是,我設法通過提取主機C並使用「delegate_to」來在主機B上執行scp來推送腳本,但無法執行這些腳本。 – tgcloud