Я хочу установить приоритет переменных. Я передаю переменную из файла инвентаризации, и если переменная не определена в файле инвентаризации, она должна запросить приглашение пользователя. Я пытаюсь использовать vars_prompt, но когда я запускаю playbook, он сразу дает мне подсказку и запрашивает значение, он не проверяет файл инвентаризации. Итак, я хочу, чтобы сначала он проверил файл инвентаризации, и если переменная там не определена, он должен запросить значение на консоли. Если ansible не поддерживает это, мы можем использовать для этого оболочку или командный модуль. Любая помощь будет оценена
Ниже мой сценарий. и файл инвентаризации Я использую доступный файл инвентаризации версии 1.6
[test]
X.X.X.X cr="12"
Пособие
name: -> Применить общую конфигурацию к узлам {{target}} hosts: "{{target}}" gather_facts: True
пользователь: root
pre_tasks:
name: -> Определен cr ??
fail: msg = "Убедитесь, что переменные 'cr' указаны в файле хоста инвентаризации"
когда: (cr не определен)
регистр: cr_value
vars_prompt:
имя: cr
подсказка: "Пожалуйста, укажите идентификатор CR"
частный: нет
когда: cr_value | не удалось
name: вывести значение cr
отладка: msg = "{{cr}}"
Ansible не поддерживает это, с голоса его создателя Майкла ДеХаана:
vars_prompt всегда запрашивает переменную.
Я бы предложил вместо этого установить роль по умолчанию или поместить хорошее значение по умолчанию в group_vars / all, и вы можете переопределить это в CLI с помощью «-e».
В качестве обходного пути вы можете установить default
для вашего запроса переменной, и если это так, переопределите его.
vars_prompt:
- name: cr
prompt: "Please mention the cr id"
private: no
default: 12