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

недоступный пустой словарь условный

У меня произошла ошибка при запуске этого кода:

- set_fact:
    my_var: "{{ my_var|default({}) | combine( {item.key: item.value} ) | default({}) }}"
    with_dict: "{{ my_dict }}"
    when: my_id in authorised[item.key]

НЕ СМОГЛИ! => {"failed": true, "msg": "Не удалось выполнить условную проверку 'my_id в авторизованных [item.key]'. Ошибка: ошибка при оценке условного (my_id в разрешенном [item.key]): невозможно найдите имя или получите доступ к атрибуту в строке шаблона ({% if my_id in authorized [item.key]%} True {% else%} False {% endif%}). \ nУбедитесь, что имя вашей переменной не содержит недопустимых символов например, '-': аргумент типа 'StrictUndefined' не повторяется \ n \ nОшибка, похоже, была в '': но может \ nбыть где-то еще в файле, в зависимости от точной синтаксической проблемы. \ n \ nСтрока, вызывающая нарушение, кажется быть:...

my_id - глобальная переменная, а авторизованный - пустой словарь (авторизованный: {})

Есть ли способ добавить условие для пропуска задач, когда авторизованный пустой словарь. Я только что попробовал

when: authorised is defined
when: authorised

но это не работает. какие-либо предложения?

Я надеюсь, что вы догадались сами, но проблема в том, что with и when пункты имеют неправильный отступ. Как написано, они являются атрибутами модуля, а не цикла и условием задачи.

Исправлено:

- set_fact:
    my_var: "{{ my_var|default({}) | combine( {item.key: item.value} ) | default({}) }}"
  with_dict: "{{ my_dict }}"
  when: my_id in authorised[item.key]