У меня произошла ошибка при запуске этого кода:
- 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]