【问题标题】:Launching a workflow template with extra vars启动带有额外变量的工作流模板
【发布时间】:2021-01-05 11:30:31
【问题描述】:

我正在尝试从 Ansible AWX 中的 python 脚本启动工作流模板,我的脚本如下所示

#!/usr/bin/env python
import requests
import json
from requests.auth import HTTPBasicAuth
import base64
import os


def main():
    URL = 'https://myawx/api/v2/'
    USER = 'username'
    PASSWORD = 'password'
    session = object
    session = requests.Session()
    session.auth = (USER, PASSWORD)
    session.verify = False
    myvars={
        "test": "test"
    }

    AWX_JOB_TEMPLATES_API="https://myawx.com/api/v2/workflow_job_templates/10/launch/"
    response = session.post(url=AWX_JOB_TEMPLATES_API,json=myvars, verify=False)
    print(response)


if __name__ == '__main__':
    main()

这会很好地启动工作流,但它不包括 net_vars 变量中的额外变量。我的 workflow_job_template 为 AWX 前端的 EXTRA VARIABLES 字段启用了“启动时提示”。

是否可以使用额外的变量启动工作流?

【问题讨论】:

  • 不应该是data=myvars吗? (只是猜测)
  • @dmitrybelyakov 将其更改为数据会引发 415 响应错误(不支持的媒体类型)

标签: python ansible ansible-template ansible-awx


【解决方案1】:

如果你想通过 REST API 使用额外的变量,myvars 需要有 extra_vars 键。
例如,这里是这样的。

#!/usr/bin/env python
import requests


def main():
    url = "http://awx_server/api/v2/job_templates/14/launch/"
    username = "admin"
    passwd = "secret"

    headers = {
        "Content-Type": "application/json",
    }

    data = {}
    data['extra_vars'] = {
        "extra_string": "test message"
    }

    req = requests.post(url,
                        headers=headers,
                        auth=(username, passwd),
                        json=data,
                        verify=False)

    print(req.status_code)
    print(req.text)


if __name__ == "__main__":
    main()

上述示例时,将test message设置为extra_string变量。
extra_string 将通过 REST API 作为额外变量提供。

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 2019-08-30
    • 2022-08-16
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2014-04-13
    • 2020-07-23
    相关资源
    最近更新 更多