在一个单独的回答把这个对组和主机变量的解决方案,我最终与(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
不,仍然给我一个语法错误。也许这完全不可能。 –