可以使用动态host_vars文件吗?

时间:2019-03-03 09:40:22

标签: ansible

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

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

因此,这就是问题。甚至有可能,如果没有,您是否知道一种实现相同结果的方法:在(本地)动态源中查询特定主机的变量。

1 个答案:

答案 0 :(得分:1)

如果脚本在目标主机上可用,我很确定lookup("pipe")会做您想要的事情:

- set_fact:
    my_vars: '{{ lookup("pipe", "./my_script.py") | from_json }}'

(用from_json替换from_yaml或将脚本的文本输出强制转换为python数据结构的任何一种; possible 会自动将其强制转换,但显式是比隐性更好)

如果您要运行 control 机器上的脚本,则可能需要对delegate_to:和某些hostvars忍者进行一些跳跃式提升,以提升将set_fact:从控制主机移到所有剧本主机