несколько параметров (переменных для ансибла). Внутри скрипта запускается команда ansible-playbook с запуском плейбука и передачей нескольких переменных, одна из этих переменных это название плейбука, который я включаю в процессе выполнения основного плейбука. Хочу сделать условие, если переменная с названием плейбука не определена, то includ'а быть не должно.
- name: Import playbook {{OU}}.yml
include: "{{OU}}".yml
when; OU is defined
Когда переменная опеределена, то плейбук включается и выполняется. Когда переменная пуста, то появляется ошибка, что плейбука не существует.
Какое условие должно привести к нормальной работе?
Переменная OU используется в имени task, а имя вычисляется даже для пропущенных задач.
поставил условие when: OU | length != 0, отработало
Похоже из bash в любом случае переменная передавалась, но с пустым значением.
нет, я проверял, debug показывал что переменная не пустая, когда в баш передавалась переменная
Это когда передавалась, там как я понял всё хорошо было.
Вопрос в случае когда не передавалась.
Вообще это очень неприятно выглядящий паттерн с запутанными связями между уровнями. Когда из внешнего скрипта через переменную ansible задается task-list для инклюда...
там сложная ситуация, для инженеров скрипт написан, надо было как-то выкручиваться)
Обсуждают сегодня