我正在尝试使用Python从REST API运行AWX作业模板。当只运行作业模板而不带任何参数时,它可以正常工作,但我需要在执行中指定目标主机。当使用get方法时,我可以看到有一个"limit"参数。不幸的是,当我用python script.py job_id运行代码时,我得到了被忽略的limit字段:b'{"job":2133,"ignored_fields":{quot;limit":"server-PRC-05"},";id":2133;类型":"作业"url":"等等。我找不到这方面的工作实例。请在下面找到我的python代码:
import sys
import requests
import json
templateid=sys.argv[1]
from requests.auth import HTTPBasicAuth
headers = {'content-type': 'application/json'}
data_new = {'limit': 'server-PRC-05'}
res = requests.post('http://awx_host/api/v2/job_templates/'+templateid+'/launch/',
verify=False, auth=HTTPBasicAuth('user', 'password'), data=json.dumps(data_new), headers=headers)
print (res.content)
neneneba API/api/v2/job_templates/{id}/launch/
仅接收到extra-vars
作为数据,将limit
var添加为extra-vars
。
在Ansible Tower中添加了额外的严格
extra_vars
验证3.0.0.传递给作业启动API的extra_vars
只有在以下情况之一为真时才有效:
- 它们对应于已启用调查中的变量
ask_variables_on_launch
设置为True
https://docs.ansible.com/ansible-tower/latest/html/userguide/job_templates.html#extra-变量
然后在该模板中设置ask_variables_on_launch=True
。
您需要启用ask_limit_on_launch
参数,然后在有效负载中以列表(数组(的形式传递限制。
你可能看起来像这样->
data_new = {'limit': ['server-PRC-05']}
观察limit
是必须列出(阵列(
要启用ask_limit_on_launch
,请参阅链接Ansible tower API:传递POST有效载荷中作业的库存