为Ansibledynamic库存中的所有主机定义variables

是否有可能使用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 variablesinventory 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": {} } } 

可能不是最佳实践,但保持简单。