我知道我可以通过清单脚本动态添加主机变量。我想知道是否可以在host_vars目录中执行脚本,而不是简单阅读。
我试图创建一个输出一些变量的简单脚本。 Ansible-playbook似乎只读取.json和.yml或没有扩展名。由于未执行这些操作,因此原始源将导致错误。
因此,这就是问题。甚至有可能,如果没有,您是否知道一种实现相同结果的方法:在(本地)动态源中查询特定主机的变量。
答案 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:
从控制主机移到所有剧本主机