在一個單獨的回答把這個對組和主機變量的解決方案,我最終與(CC @udondan)想出了擴大。
基本上,我將我的庫存文件中的所有主機分組在幾個子組和父組之間,無論如何。然後,我創建文件組瓦爾每當適用所以它遵循優先一定的順序(首先是最高,覆蓋所有其他,上適用於所有的主機和可重寫環比下滑):
task vars > playbook vars > host_vars > web/database-local > local > web/database > all
那方式我可以定義所有主機使用的變量(所有),只是Web /數據庫(主要是生產值),所有本地服務器(本地組),所有本地Web /數據庫服務器等等,或每個主機(標準host_vars
)。當然,劇本和任務變量會進一步覆蓋這些。所有這些遵循Ansible準則。
本地庫存的例子(替換爲您的主機名或IP默認情況下,儘可能多的添加爲你每組一樣,X-地方,如果這將是生產庫存可省略):
[web-local]
default
[database-local]
default
[local:children]
web-local
database-local
[web:children]
web-local
[database:children]
database-local
然後我group_vars
文件夾爲每個廣告組的目錄和變量拆分後的文件,以保持它的結構(可能只是有一個database-local.yaml
文件爲database-local
組實例,而不是文件夾和分裂YAML文件):
group_vars/
all/
always_applied_variables.yaml
swap.yaml
web/
database/
database_only_variables.yaml
database-production/
production_database_variables.yaml
production/
random_production_only_variables.yaml
local/
users.yaml
web-local/
database-local/
local_database_variables.yaml
host_vars/
default/
php.yaml
mysql.yaml
other_specific_host_variables.yaml
希望這有點清楚。我很樂意回答任何問題。
如果你在with_items行失去縮進,它會工作嗎? – ydaetskcoR
不,仍然給我一個語法錯誤。也許這完全不可能。 –