Невозможное условие для элемента словаря

У меня есть один список словарей:

members_list:
          any:
             name: any
             username: any
          anyone:
             name: 
             username: anyone

В моей книге воспроизведения Ansible я запускаю несколько контейнеров докеров:

docker_container:
     name: "{{ item.key }}"
when: "{{ item.key }} != any"
with_dict: "{{ members_list }}"

Но я получаю следующую ошибку:

The conditional check '{{ item.key }} != any' failed. The 
error was: error while evaluating conditional ({{ item.key 
}} != any): 'any' is undefined   

Когда я запускаю playbook без условного оператора when, он работает нормально.

Заранее спасибо.

Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
0
0
2 305
1

Ответы 1

Слово any необходимо заключить в кавычки, поскольку в противном случае оно интерпретируется как ссылка на переменную. Кроме того, вам не нужны маркеры шаблонов Jinja в выражении when (выражение уже оценивается как выражение jinja):

- docker_container:
       name: "{{ item.key }}"
  when: "item.key != 'any'"
  with_dict: "{{ members_list }}"

Я считаю, что такие вложенные цитаты могут сбивать с толку, и часто выбираю одну альтернативных механизмов цитирования YAML, например:

- docker_container:
       name: "{{ item.key }}"
  when: >-
    item.key != 'any'
  with_dict: "{{ members_list }}"

Это идентично предыдущей версии; Мне просто легче прочтите и поймите.

Другие вопросы по теме