Ansible 可以使用动态主机文件吗?

Ansible 可以使用动态主机文件吗?,ansible,Ansible,我知道我可以通过清单脚本动态添加主机变量。我想知道我是否可以在host_vars目录中执行脚本,而不是简单的读取 我试图创建一个输出一些变量的简单脚本。ansible playbook似乎只读取.json和.yml或不读取扩展名。由于未执行这些操作,原始源将导致错误 所以,问题就来了。这可能吗?如果不可能,您是否知道实现相同结果的方法:查询本地动态源以获取特定主机的变量。如果脚本在目标主机上可用,我很确定将执行您想要的操作: - set_fact: my_vars: '{{ lookup

我知道我可以通过清单脚本动态添加主机变量。我想知道我是否可以在host_vars目录中执行脚本,而不是简单的读取

我试图创建一个输出一些变量的简单脚本。ansible playbook似乎只读取.json和.yml或不读取扩展名。由于未执行这些操作,原始源将导致错误

所以,问题就来了。这可能吗?如果不可能,您是否知道实现相同结果的方法:查询本地动态源以获取特定主机的变量。

如果脚本在目标主机上可用,我很确定将执行您想要的操作:

- set_fact:
    my_vars: '{{ lookup("pipe", "./my_script.py") | from_json }}'
用from_yaml或任何东西替换from_json,以将脚本的文本输出强制转换为python数据结构;ansible可能会自动强制它,但显式优于隐式

如果您想让控制计算机上的脚本运行,您可能需要使用delegate_to:和一些hostvars ninjary进行一些hoopjumpery操作,以将set_fact:从控制主机升级到所有playbook主机