gpt4 book ai didi

json - Ansible 中的自定义动态库存脚本/插件

转载 作者:行者123 更新时间:2023-12-02 04:18:27 25 4
gpt4 key购买 nike

Ansible allows devs 编写程序(用任何语言),该程序将返回描述当前主机的动态“快照”的 JSON。我使用的是 vSphere,目前 Ansible OSS 不支持它,因此我需要编写这样一个“自定义库存插件”。

我可以处理 vSphere 的主机列表查询,以及构建与 Ansible 期望的兼容的 JSON。

文档完全(看似)失败的地方是:

  • 如何将 Ansible 与我的库存应用程序“连接”?也就是说,假设我的库存应用程序是一个简单的 bash 脚本 (inventory.sh)..如何配置 Ansible 来调用 bash inventory.sh 并从中获取 JSON?实际上,该应用程序可能是一个 Java 可执行文件 (inventory.jar),但我认为,如果我能弄清楚如何让它与 bash 一起工作,我就可以推断到 Java;和
  • Ansible 如何实际捕获/从应用程序取回 JSON? 标准输出?这一切都应该通过 HTTP 连接发生吗?例子? inventory.shinventory.jar 如何将该 JSON 传送回 Ansible?

最佳答案

list 脚本必须位于运行 Ansible 的同一台计算机上。它不通过 h​​ttp 进行通信,Ansible 只会解析程序的 STDOUT。位置根本不重要,调用 Ansible 时必须将路径传递给 Ansible:

ansible-playbook ... -i /path/to/your/inventory.sh

避免每次都经过库存位置 add this to you ansible.cfg :

inventory = /path/to/your/inventory.sh

您还可以将脚本复制到 /etc/ansible/hosts,这是 Ansible 查找 list 文件/脚本的默认位置,但我更喜欢将所有内容放在一起,因此我建议将它接近您的剧本/角色等。

And (3) Is any of this documented, anywhere? Don't see anything in the Ansible docs...

页面Developing Dynamic Inventory Sources上没有提到它但这可以在页面 Dynamic Inventory 上的一些示例中看到。 。这些文档由社区管理,有时缺乏结构化且缺乏重要信息。

顺便说一句,有一个 VMware inventory包括脚本。通过查看源代码,我发现它导入了一些 vSphere 内容。我对 VMware 的经验很少,所以我无法判断这是否确实是您所需要的,并且不需要您自己编写。

关于json - Ansible 中的自定义动态库存脚本/插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com