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

如何通过Python调用Ansible Tower API向playbook模板传递变量

正确传参方式

Ansible Tower v2 版本的作业模板启动接口中,extra_vars 字段要求传入键值对格式的JSON对象,你之前尝试的数组格式、未嵌套在extra_vars下的写法都不符合接口规范,所以会返回400错误。

推荐写法(用requests内置json参数,无需手动处理序列化和请求头)

import requests

# 调用前请先确认对应作业模板已开启「允许提示传入额外变量」的配置
response = requests.post(
    url='http://localhost/api/v2/job_templates/13/launch/',
    auth=('user', 'pass'),
    json={
        "extra_vars": {
            "service": "apache2",
            # 从告警提取的其他变量比如主机名也可以直接加在这里
            "target_host": "告警中提取的主机名"
        }
    },
    verify=False
)

# 调试时可以打印返回信息排查错误
print(response.status_code)
print(response.json())

手动拼接data参数的写法(不推荐,容易出现转义错误)

headers = {'Content-Type': 'application/json'}
data = '{"extra_vars": {"service": "apache2"}}'
response = requests.post(
    'http://localhost/api/v2/job_templates/13/launch/',
    headers=headers,
    data=data,
    verify=False,
    auth=('user','pass')
)

注意事项

  • 必须提前在Ansible Tower对应作业模板的设置页面勾选「启用提示传入额外变量」选项,否则接口会拒绝接收传入的自定义变量,返回400错误
  • 如果你的作业模板需要指定运行目标主机,可以把主机参数也放入extra_vars,也可根据模板配置传入inventory相关参数指定目标主机

内容的提问来源于stack exchange,提问作者Steve J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:03