Назад | Перейти на главную страницу

Как ставить задачи по переменной в Ansible

Я работаю с 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"

1 Это вызывает ошибку, выделенную жирным шрифтом ниже:

ОШИБКА! Синтаксическая ошибка при загрузке YAML. не нашел ожидаемого ключа (в строке: когда: "{{q1}}" является 1)

2 В сообщении также указывается;

Мы могли ошибаться, но похоже, что это проблема с отсутствующими кавычками. Всегда заключайте скобки выражения шаблона, когда они начинают значение. Например:

with_items:
  - {{ foo }}

Следует записать как:

with_items:
  - "{{ foo }}"

Я изменил кавычки на single / double / nil для обоих значений, и это все еще происходит, я в тупике.

Я хочу предоставить пользователю список входных данных, которые они могут предоставить vars_prompt, а затем выполнять определенные задачи, используя эти данные в качестве реквизита с когда:.

Не помещайте в скобки условие when. Возможные условия по умолчанию развернуты.

Пытаться

когда: q1 == "1"