我的情况类似于以下示例。
[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909
我有不同的主机,每个主机的maxRequestsPerChild参数都有一个特定的值。
如果这是一个静态主机文件,则可以在每个主机中获取maxRequestsPerChild的值。
但是我需要将主机和maxRequestsPerChild动态传递为JSON。 如何构造JSON并在我的剧本中访问JSON?
答案 0 :(得分:0)
Ansible不直接支持JSON文件形式的清单。 但是,它完全支持清单脚本返回JSON。
这是官方文档的链接,还描述了预期的输出格式:https://docs.ansible.com/ansible/latest/dev_guide/developing_inventory.html
您可能要实现更新的清单格式,这是更快的方法,并且显式地允许每个主机的变量,如https://docs.ansible.com/ansible/latest/dev_guide/developing_inventory.html#tuning-the-external-inventory-script
部分所述在这种情况下,您的脚本将返回以下输出:
{
"_meta": {
"hostvars": {
"host1": {
"http_port": 80,
"maxRequestsPerChild": 808
},
"host2": {
"http_port": 303,
"maxRequestsPerChild": 909
}
}
},
"atlanta": {
"hosts": [ "host1", "host2" ]
}
}