You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible动态库存脚本能否返回默认格式的文本型库存文件?

问题原因

Ansible的动态库存脚本必须返回JSON格式,这是官方规定的动态库存规范。你输出的那种[mailserver]样式的文本是静态库存的INI格式,Ansible的动态库存插件会把脚本输出当成JSON/YAML来解析,自然会触发格式错误——INI结构根本不是有效的YAML字典。

解决方案

最简便的方法是借助ansible-inventory工具,把你生成的INI格式内容转换成符合要求的JSON输出,不用自己写复杂的JSON生成逻辑。

举个示例脚本:

#!/bin/bash
# 生成你需要的INI格式库存内容
INI_STOCK=$(cat <<EOF
[mailserver]
mail01.example.com smtp_port=25
mail02.example.com smtp_port=587

[webserver]
web01.example.com ansible_ssh_port=2222
EOF
)
# 用ansible-inventory转成JSON输出
echo "$INI_STOCK" | ansible-inventory --inventory - --list

然后给脚本加可执行权限:

chmod +x dynamic_inventory.sh

执行playbook时指定这个脚本作为库存:

ansible-playbook -i dynamic_inventory.sh your_playbook.yml

这样就能完美解决问题——既保留了你熟悉的INI格式编写逻辑,又满足了动态库存的JSON输出要求。

另外,如果你不想依赖ansible-inventory,也可以自己在脚本里手动构造JSON输出,但这种方式需要处理组、主机变量的嵌套结构,远不如上面的方法高效。

内容的提问来源于stack exchange,提问作者Kristi Jorgji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:43:08