Как использовать несколько версий Ansible в Ansible Tower

Вопрос или проблема

Ansible Tower 3.3.0
В настоящее время мы используем Ansible 2.4.2 и нуждаемся в обновлении до 2.5.x, чтобы использовать новые функции, не нарушая уже существующие задачи, которые были протестированы и работают. Мы хотели бы иметь возможность указывать версию Ansible для выполнения задач, для сертификации, и если они проходят, то переходить на новую версию, а если нет, продолжать использовать текущую версию.

Наши плейбуки работают на сетевых устройствах, RHEL7, VMware, Openstack и нескольких версиях Windows.

Ранее мы обновлялись до 2.5.0 и столкнулись с проблемами с win_copy, win_template и несколькими другими модулями, что заставило нас вернуться к предыдущей работающей версии.

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

Ansible развивается достаточно быстро, и любое крупное обновление версии может сломать не тривиальные плейбуки. Учитывая цикл выпуска в около 4 месяца, вы можете удерживаться на одной версии около года, прежде чем ваша версия станет устаревшей.

Вы можете создать ветку управления версиями ваших плейбуков, как это делается в разработке программного обеспечения. Создайте стабильную ветку 2.4 для обслуживания. Портируйте на текущую версию Ansible в главной ветке разработки master или trunk.

Поддерживайте какую-то среду разработки, тестирования и производства для того, что вы развертываете. Как и в случае с другими изменениями, сначала разверните новые версии Ansible в стадии разработки и тестирования.

Я не знаю, как вы будете тестировать разные версии Ansible в Tower. Я почти уверен, что это будет означать отдельное тестовое развертывание Tower.

Если вы хотите указать версию, под которой выполняются задачи, вы управляете этим с помощью ваших изображений выполнения. Версия Ansible, которую вы запускаете, определяется контейнером, который фактически её запускает.

Если вы войдете в свои изображения выполнения и настроите одно из них для получения определенного тега для awx-ee, вы получите версию ansible, которая у него есть.

Я клянусь, что однажды видел таблицу версий для awx в сравнении с версиями ansible, но не могу её найти. Возможно, вам просто нужно будет получить несколько изображений и запустить ansible –version внутри них, чтобы сориентироваться.

В любом случае, вы можете затем назначить, какие шаблоны должны использовать определённую версию, а какие – другую. Я рекомендую хорошую систему именования, чтобы избежать headaches. Надеюсь, это поможет.

Ответ или решение

Использование нескольких версий Ansible в Ansible Tower может быть сложной задачей, особенно при необходимости поддержания совместимости с существующими рабочими процессами. Вот шаги и рекомендации, которые помогут вам управлять несколькими версиями Ansible в Ansible Tower:

1. Использование изображений выполнения (Execution Images)

Ansible Tower (AWX) использует контейнеры для запуска задач. Вы можете создать разные образы выполнения, в зависимости от требуемой версии Ansible.

  • Создание изображений:
    Создайте Docker-образ для каждой версии Ansible, которую вы планируете использовать. Например, чтобы создать образ для Ansible 2.4.2, используйте следующий Dockerfile:

    FROM ansible/ansible-runner:2.4.2
    # Другие необходимые установки

    Затем для Ansible 2.5.x создайте другой образ с соответствующей версией.

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

2. Привязка версий к шаблонам заданий

После того как у вас есть несколько изображений, вы можете привязать каждое задание или шаблон к конкретной версии Ansible.

  • Создание шаблонов:
    Для каждого задания или рабочего процесса в Ansible Tower создайте соответствующий шаблон. При настройке шаблона выберите конкретное изображение выполнения, соответствующее версии Ansible, которую вы хотите использовать. Это означает, что задания, использующие Ansible 2.4.2, будут по-прежнему работать, а вы сможете протестировать новые задания с Ansible 2.5.x.

  • Имя изображения:
    При создании изображений используйте четкое и понятное именование, чтобы было легко понимать, какую версию Ansible они содержат.

3. Тестирование

Рекомендуется сначала развернуть новую версию Ansible в тестовой среде, чтобы проверить, как это повлияет на ваши рабочие процессы:

  • Тестовая среда:
    Настройте среду разработки и тестирования, где вы сможете запускать свои playbook с новой версией Ansible, избегая влияния на продуктивные задания.

  • Постепенное внедрение:
    После успешного тестирования можно постепенно внедрить новую версию в продакшн, переключая задания на новый шаблон.

4. Поддержка других компонентов

При обновлении других компонентов системы, таких как сам Ansible Tower, также соблюдайте осторожность:

  • Резервные копии:
    Обязательно создавайте резервные копии конфигурации Tower и общей базы данных перед проведением обновлений.

  • Документация по совместимости:
    Всегда проверяйте документацию на совместимость между версией Ansible Tower и версиями Ansible, чтобы избежать возможных проблем.

В заключение, использование нескольких версий Ansible в Ansible Tower возможно через управление изображениями выполнения и шаблонами заданий. Обязательно проводите тестирование в безопасной среде перед внесением изменений в продуктивную среду.

Оцените материал
Добавить комментарий

Капча загружается...