Я работаю с Ansible в течение долгого времени, и мне пришло в голову, что я хотел бы добавить настройку в свои playbooks на основе пользовательского ввода. Но следующие игры вызывают ошибки:
---
# Test user input in play
- hosts: 10.10.10.10
gather_facts: yes
become: yes
become_method: sudo
# User input can be received via vars_prompt;
vars_prompt:
- name: "q1"
prompt: "answer to q1?"
private: no
default: 0
tasks:
- name:
block:
- name: "If user input is 1, then create /tmp/success"
shell: touch /tmp/success
when: {{ q1 }} == "1"
ОШИБКА! Синтаксическая ошибка при загрузке YAML. не нашел ожидаемого ключа (в строке: когда: "{{q1}}" является 1)
Мы могли ошибаться, но похоже, что это проблема с отсутствующими кавычками. Всегда заключайте скобки выражения шаблона, когда они начинают значение. Например:
with_items:
- {{ foo }}
Следует записать как:
with_items:
- "{{ foo }}"
Я изменил кавычки на single / double / nil для обоих значений, и это все еще происходит, я в тупике.
Я хочу предоставить пользователю список входных данных, которые они могут предоставить vars_prompt, а затем выполнять определенные задачи, используя эти данные в качестве реквизита с когда:.
Не помещайте в скобки условие when. Возможные условия по умолчанию развернуты.
Пытаться
когда: q1 == "1"