Я понимаю, что ansible ограничен тем, чтобы быть инструментом конфигурации, т. Е. Мы создаем конфигурации в файлах yaml, а скрипты python выполняют выполнение, просматривая конфигурацию.
Однако есть полезный атрибут when
, который будетпомощь в принятии решения о том, какую конфигурацию следует выполнить на основе условия, указанного в when
, и порядок конфигураций также выполняется на основе порядка задач, переменные и факты
доступны для достижения динамических конфигураций.
Однако мое требование включает в себя сложные циклы и условия и рекурсивную обработку, которая либо совершенно недостижима в книгах воспроизведения, либо необходимо создать несколько задач с условиями.
Несколько проблем, которые я обнаружил при использовании ansibleplaybooks:
- Нет, если еще структуры
- Циклы имеют очень ограниченную функциональность
- переменные области не работают, как в языках сценариев
И проблема с рекурсивными задачамиНапример:
start_installation.yml
выполняет установку пакетов, определенных в переменной - Пакет имеет зависимости, и зависимости имеют зависимости, т.е. рекурсивные зависимости и установка должна выполняться наСначала зависимости рекурсивно, вызывая
start_installation.yml
.Однако это создает проблемы с областью видимости переменной, т. Е. Если package_to_install равен 'A' во время запуска start_installation.yml
для A, и если A имеет зависимость 'B', то package_to_install будет установлен в 'B', ввремя запуска start_installation.yml
для B. Теперь, когда установка B завершена, она не может выполнить установку A, поскольку область видимости переменной не является локальной для вызываемой функции.
Мой вопрос в основном заключается в том, правильно ли использовать Ansible для выполнения этих задач или мне нужно использовать язык сценариев для выполнения необходимых проверок?