Ansible AXW 忽略 extra_vars

问题描述

我想通过 AWX-API 启动一个包含一些 extra_vars 的作业模板,但我得到的每个响应都有一个空的 extra_vars 字段。我已经检查了有关它的文档: https://docs.ansible.com/ansible-tower/latest/html/userguide/job_templates.html#extra-variables

其中指出,您必须在调查中设置 ask_variables_on_launch: true 和/或具有相应的变量。我的请求检查这两个条件:

请求

 POST: https://my.awx.host/api/v2/job_templates/7/launch/

身体

 {
"can_start_without_user_input": false,"passwords_needed_to_start": [],"ask_scm_branch_on_launch": false,"ask_variables_on_launch": true,"ask_tags_on_launch": false,"ask_diff_mode_on_launch": false,"ask_skip_tags_on_launch": false,"ask_job_type_on_launch": false,"ask_limit_on_launch": false,"ask_verbosity_on_launch": false,"ask_inventory_on_launch": false,"ask_credential_on_launch": false,"survey_enabled": true,"variables_needed_to_start": [
    "application_server_name","server_location","application_server_type","ssh_keys"
],"credential_needed_to_start": false,"inventory_needed_to_start": false,"job_template_data": {
    "name": "template name ","id": 7,"description": ""
},"defaults": {
    "extra_vars": {
        "application_server_name": "some name","server_location": "some location","application_server_type": "some type","ssh_keys": [
            {
                "name": "key1"
            },{
                "name": "key2"
            },{
                "name": "key3"
            }
        ]
    },"diff_mode": false,"limit": "","job_tags": "","skip_tags": "","job_type": "run","verbosity": 2,"inventory": {
        "name": "AWX Tower (Localhost) my.awx.host","id": 1
    },"credentials": [
        {
           ...
        }
    ],"scm_branch": ""
}}

回复

{
"variables_needed_to_start": [
    "'application_server_name' value missing","'server_location' value missing","'application_server_type' value missing","'ssh_keys' value missing"
]}

我有点困惑,因为我按照文档做了所有事情。调查所需的值甚至在同一个请求正文中。有人可以帮忙解决这个问题吗?

我使用的是 AWX 16.0.0 Ansible 版本 2.9.15 谢谢

解决方法

所以实际上,您只需要发送额外的变量,而不是从 AWX 获得的整个响应 + 变量。我不知道,是我没有在文档中看到这一点,还是只是显而易见而我没有理解。

ask_variables_on_launch 仍然必须为真!