#ansible
Вопрос:
Я пытаюсь получить список серверов NTP от пользователя (IP-адрес или доменное имя). Пользователь указывает, что он закончил ввод списка, ничего не вводя в приглашение. Затем я бы продолжил создавать chrony.conf, используя файл .j2.
Проблема в том, что мне трудно зацикливать задачи таким образом
--- - name: Chrony Service Setup hosts: localhost vars: ntpServers: [] addNTP: "{{ result.user_input }}" tasks: - name: Prompt for NTP server pause: prompt: "Do you want to add unique NTP server (y/n)?" register: result - when: addNTP == "y" vars: ntpServer: initVal block: - name: debug: msg: "Hello" - name: Init set val of ntpServer set_fact: ntpServer = "initVal" - name: Block to ask user for input and append to list - when: "{{ ntpServer.user_input }}" != "" block: - name: Ask user for NTP server pause: prompt: "Please input the IP Address or Domain Name of the NTP server" register: ntpServer - name: Append users input to ntpServers List set_fact: ntpServers: "{{ ntpServers [ntpServer] }}" until: "{{ ntpServer.user_input }}" == "" - name: output contents of NTP servers debug: msg: "An item: {{ item }}" with_items: "{{ ntpServers }}"
В настоящее время я пытаюсь выполнить цикл «пока», который должен успешно выполнить две задачи в блоке.
Я продолжаю получать синтаксическую ошибку в этой строке:
- when: "{{ ntpServer.user_input }}" != ""
Несмотря на то, что это соответствует приведенному примеру
Should be written as: with_items: - "{{ foo }}"
Комментарии:
1. Это синтаксическая ошибка, вам не нужно
- when:
под- name: Block...
, просто используйтеwhen:
. Также разделители Jinja не требуются в условных выражениях, т. е.when: ntpServer.user_input != ""
.