是否可以使用动态host_vars文件?

问题描述 投票:0回答:1

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

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

所以,这个问题。这是否可能,如果没有,您是否了解实现相同结果的方法:查询特定主机变量的(本地)动态源。

ansible
1个回答
1
投票

我非常确定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主机

© www.soinside.com 2019 - 2024. All rights reserved.