首页 > 解决方案 > 是否可以使用动态 host_vars 文件?

问题描述

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

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

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

标签: ansible

解决方案


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

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

from_jsonfrom_yaml或任何东西将脚本的文本输出强制转换为 python 数据结构; ansible可能会自动强制它,但显式优于隐式)

如果你想让控制机器上的脚本运行,你可能需要做一些 hoopjumperydelegate_to:和一些hostvarsninjary 来促进set_fact:控制主机的关闭到所有 playbook 主机


推荐阅读