是否有可能使用dynamic库存为所有主机定义主机variables?
目前我可以生成一个清单,允许我将variables分配给特定的主机,但是我想实现的是这样的:
{ "_meta": { "hostvars": { "all": { "my_global_random_variable": "global_random_value" } } }, "web_servers": { "children": [], "hosts": [ "web_server1", "web_server2" ], "vars": {} }, "database_servers": { "children": [], "hosts": [ "database_server1" ], "vars": {} } }
这应该允许我从任何上下文访问“my_global_random_variable”,就好像我将在variables文件中定义该variables一样。
dynamic inventory设置的inventory variables是inventory variables 。 当一个variables被设置在多个地方Ansible设置variables优先顺序的值:
role defaults [1] inventory vars [2] inventory group_vars inventory host_vars playbook group_vars playbook host_vars host facts play vars play vars_prompt play vars_files registered vars set_facts role and include vars block vars (only for tasks in block) task vars (only for the task) extra vars (always win precedence)
在库存中设置的variables具有相对较低的优先权。 所以没有必要使用dynamic inventory来实现这一点。 只需在angular色级别设置variables。
我结束了使用查找插件而不是清单来检索我的variables。
有关查找的更多信息: https : //docs.ansible.com/ansible/playbooks_lookups.html
我想这样做,似乎与以下工作(适合您的例子):
{ "all": { "vars": { "my_global_random_variable": "global_random_value" } }, "web_servers": { "children": [], "hosts": [ "web_server1", "web_server2" ], "vars": {} }, "database_servers": { "children": [], "hosts": [ "database_server1" ], "vars": {} } }
可能不是最佳实践,但保持简单。