我有一種情況,我們有3層框,在每一層我們應用不同的變量設置(如緩存目錄),但有一堆默認值。我還需要在每個節點的基礎上覆蓋,這通常通過主機本身的庫存變量完成。我不確定什麼是組織主機的最佳方式,以便對我有利的precedence works。Ansible:使用嵌套組與變種
以下是我嘗試過的不同的東西。在每一種情況下,我在清單文件中像這樣的條目:
[bots-fancy]
fancy-1
[bots-super-fancy]
super-1
[bots-magical]
magic-1
magic-2 provider=aws
起初,我有他們每個變量定義的長字符串。我也有不同的group_var/bots/[bots-magical | bots-super-fancy | bots-fancy].yaml
文件。這很快就變得站不住腳了。
嘗試1:劇本變量 在劇本我有這樣的事情:
---
hosts:
- bots
vars_files:
- "group_vars/bots/defaults.yml"
- "group_vars/bots/{{ groups_names[0] }}.yml"
roles:
- somethign
這個工作(雖然是易碎的),但它不會讓我重寫在每臺主機的基礎。我不得不偶爾在節點上設置不同的事物,但不是在整個組中。
嘗試2:使用group_vars
每個
我加入
[bots:children]
bots-fancy
bots-super-fancy
bots-magical
到主機文件。從手冊中刪除任何vars_files
,併爲每個組創建group_vars
。我將默認/共享設置添加到group_vars/bots.yaml
。當我運行該劇本時,它似乎只會加載bots
group_vars。理想情況下,我希望它加載bots
,然後用bots-fancy
覆蓋它。然後最後來自主機文件的值。
我不確定構建這些組的最佳方式,所以任何輸入都會非常有幫助!