我知道我可以通过库存脚本动态添加主机变量。我想知道我是否可以在host_vars目录中执行脚本而不是简单读取。
我试图创建一个输出一些变量的简单脚本。似乎只有.json和.yml或没有扩展名被ansible-playbook读取。由于未执行这些操作,原始源将导致错误。
所以,这个问题。这是否可能,如果没有,您是否了解实现相同结果的方法:查询特定主机变量的(本地)动态源。
我非常确定lookup("pipe")
会做你想要的,只要脚本在目标主机上可用:
- set_fact:
my_vars: '{{ lookup("pipe", "./my_script.py") | from_json }}'
(用from_json
替换from_yaml
或其他任何东西来强制将脚本的文本输出强制转换为python数据结构; ansible可能会自动强制它,但显式优于隐式)
如果你想要控制机器上的脚本运行,你可能需要与delegate_to:
和一些hostvars
ninjary做一些hoopjumpery来将set_fact:
从控制主机上推广到所有的playbook主机