我正在使用AWX,并且编写了自定义脚本来构建清单。该脚本只是向API发出GET请求,以检索状态为“ ON”的计算机列表。
在AWX上启动此脚本时,我看到对API的多个GET请求(实际上每个主机一个),而不是一个。我不知道问题出在哪里。
这是脚本:
#!/usr/bin/env python
import requests
import json
headers = {
"Authorization": "xxx"
}
url = 'https://xxxxx.com/api/ppd/machineson'
r = requests.get(url, verify=False, headers=headers)
data = json.loads(r.text)
print({"XPC_PPD": {'hosts': data["objects"]}})
输出示例: 导入20个主机,20个GET请求(而不是一个)需要11.0s:
答案 0 :(得分:0)
我发现这是Ansible库存脚本的已发布功能,如果它不提供嵌套在_meta dict下的hostvars dict,它将为每个主机重新调用一次该脚本。我的脚本没有执行此操作,因此很有可能就是这种情况。对于每个主机,它也有可能将整个清单内容嵌套在hostvars下,因为它所假定的约定是,将--host选项传递给脚本会告诉脚本为该主机提供变量。
必须遵循以下架构:
{
"_meta": {
"hostvars": {}
},
"all": {
"children": [
"ungrouped"
]
},
"ungrouped": {
"children": [
]
}
}