ansible - 是否可以使用动态 host_vars 文件?
问题描述
我知道我可以通过清单脚本动态添加主机变量。我想知道是否可以在 host_vars 目录中执行脚本,而不是简单读取。
我试图创建一个输出一些变量的简单脚本。ansible-playbook 似乎只读取 .json 和 .yml 或没有扩展名。由于这些未执行,原始源将导致错误。
所以,因此问题。这是否可能,如果没有,您是否知道实现相同结果的方法:查询(本地)动态源以获取特定主机的变量。
解决方案
如果脚本在目标主机上可用,我很确定lookup("pipe")
会做你想做的事:
- set_fact:
my_vars: '{{ lookup("pipe", "./my_script.py") | from_json }}'
(from_json
用from_yaml
或任何东西将脚本的文本输出强制转换为 python 数据结构; ansible可能会自动强制它,但显式优于隐式)
如果你想让控制机器上的脚本运行,你可能需要做一些 hoopjumperydelegate_to:
和一些hostvars
ninjary 来促进set_fact:
控制主机的关闭到所有 playbook 主机
推荐阅读
- c# - 如何访问 C# 中的继承方法?
- algorithm - 基于球员得分的比赛调度算法
- reactjs - 出现错误**错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。**
- python - TKinter:创建一个带有多选的下拉列表框
- c - C只需将新行添加到导致printf分段错误的NULL点
- javascript - How to filter array in javascript
- flutter - 如何在导航时修复黑屏?
- python - 分而治之的策略python
- flutter - 在 null 上调用了“findRenderObject”。带有 Key.currentContext.findRenderObject() 的 SliverList,
- evernote - 为什么 TTransportException 突然增加?