的Ansible最佳實踐文檔recommends分離庫存:如何在Ansible中的不同庫存之間共享group_vars?
inventories/ production/ hosts.ini # inventory file for production servers group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ hostname1 # if systems need specific variables, put them here hostname2 # "" staging/ hosts.ini # inventory file for staging environment group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ stagehost1 # if systems need specific variables, put them here stagehost2 # ""
我的分期和生產環境都以同樣的方式構成。我在兩種環境中都有相同的組。事實證明,我也有相同的group_vars相同的組。這意味着我想消除冗餘。
有沒有辦法在不同庫存之間共享一些group_vars?
作爲一種變通我開始把共享group_vars進入角色。
my_var:
my_group:
- { var1: 1, var2: 2 }
這使得有可能通過交叉主機的組與定義的VAR遍歷一些增值經銷商:
with_items: "{{group_names | intersect(my_var.keys())}}"
但是,這是一個有點複雜理解,我覺得角色不應該知道任何關於團體的事
我想單獨大部分庫存,但分享一些group_vars在一個易於理解的方式。是否有可能將全局group_vars與庫存特定的group_vars合併?
但這隻適用於劇本。即席命令將失敗。有沒有辦法自定義ad-hoc命令執行,以便讀取全局group_vars? – ceving
另一個問題似乎是,如果我想從不同的組收集變量,我必須設置'hash_behaviour = merge'。以及哈希中的數組值如何? – ceving
這不適用於ad-hoc。列表不能自動合併,你必須使用一些手動任務。 –