Возможность зацикливания до тех пор, пока пользователь не введет определенный ввод

#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 != "" .