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 Version 2.9.15 Спасибо


person xBoLLo    schedule 04.03.2021    source источник
comment
Почему вы отправляете extra_vars детьми defaults? Разве это не должно быть элементом верхнего уровня в теле вашего запроса?   -  person Zeitounator    schedule 04.03.2021
comment
@Zeitounator, как указано в документации, я отправляю запрос GET в конечную точку ../launch, чтобы получить все значения, необходимые AWX. extra_vars - это потомок значений по умолчанию в этом ответе. После этого я добавляю свои переменные в extra_vars и отправляю их обратно как POST. Но я попробую ваше предложение.   -  person xBoLLo    schedule 05.03.2021
comment
@Zeitounator Запрос не выполняется, когда я пытаюсь отправить extra_vars как элемент верхнего уровня.   -  person xBoLLo    schedule 08.03.2021
comment
Вы нашли какие-нибудь решения? У меня такая же проблема :(   -  person Marat Gainutdinov    schedule 19.05.2021
comment
@MaratGainutdinov вообще-то да! вы должны отправить JUST extra_vars как JSON. Не весь ответ от awx. Но флаг ask_variables_on_launch должен быть истинным.   -  person xBoLLo    schedule 19.05.2021
comment
да, сделал то же самое, и это сработало.   -  person Marat Gainutdinov    schedule 19.05.2021


Ответы (1)


На самом деле вам нужно отправлять только дополнительные переменные, а не весь ответ + переменные, которые вы получаете от AWX. Я не знаю, не видел ли я этого в документации, или это просто очевидно, и я этого не понял.

ask_variables_on_launch по-прежнему должен быть правдой!

person xBoLLo    schedule 19.05.2021