Как расширить сборники игр для достижения сложных условий? - PullRequest
0 голосов
/ 18 февраля 2019

Я понимаю, что 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 для выполнения этих задач или мне нужно использовать язык сценариев для выполнения необходимых проверок?

1 Ответ

0 голосов
/ 18 февраля 2019

Чтобы ответить на ваш вопрос:

"... это правильный подход к использованию Ansible для выполнения этих задач или мне нужно использовать язык сценариев для выполнения необходимых проверок?

Правильный подход заключается в использовании пакета - Универсальный менеджер пакетов ОС . Если это не работает создайте пример Minimal, Complete и Verifiable

...