Перейти к содержанию

Ansible Molecule

Документация по Ansible Molecule

Описание

Фреймворк тестирования ansible-ролей

Преимущества

  • Позволяет проверять синтаксис ролей

  • Имитирует раскатывание роли

  • Проверка линтеров

  • Умеет работать с ansible-galaxy


Фазы тестирования

Molecule поддерживает следующие фазы тестирования:

Stage Описание
dependency Установить зависимости ролей из Galaxy или других источников
cleanup Предтестовая очистка
dependency Установить зависимости ролей из Galaxy или других источников
destroy Удаление всех существующих тестовых инстансов
syntax Проверка playbook на синтаксис ansible-playbook --syntax-check
create Создание тестового инстанса с использованием драйвера
prepare Запуск подготовительных задач перед ролью (установка предварительных зависимостей для тестового инстанса)
converge Запуск вашей роли на созданном и подготовленном инстансе
idempotence Запуск converge повторно, чтобы убедиться, что изменений не произошло
side-effect Дополнительные задачи для сложных сценариев (тестирование на откат)
verify Запуск тестов для проверки что роль работает так как требуется
cleanup Запуск задач по очистке после тестирования

Установка

Виртуальное окружение

Для идентичности всех компонентов ansible рекомендуется использовать единое виртуальное окружение Виртуальное окружение

После активации виртуального окружения выполняем установку пакетов:

pip3 install ansible-dev-tools
python3 -m pip install molecule ansible-core
pip3 install ansible-creator

Провайдеры (плагины/driver) molecule

Описание

Вычислительный узел (некий backend) на котором будет проверяться роль и остальные фазы тестирования Molecule

Провайдеры Molecule

  • Docker

  • Vagrent

Установка провайдеров Molecule

Для установки провайдера требуется использовать команду pip:

pip install molecule ansible-core "molecule-plugins[docker]"

# For other drivers

pip install "molecule-plugins[vagrant]"
pip install "molecule-plugins[podman]"
pip install "molecule-plugins[ec2]"


Структура Molecule scenraio

molecule.yml - основной конфигурационный файл molecule

---
dependency:
  name: galaxy
  options:
    role-file: requirements.yml
    requirements-file: requirements.yml

driver: 
  name: docker

platforms: 
  - name: instance
    image: ubuntu:22.04
    pre_build_image: true

provisioner:
  name: ansible

verifier: 
  name: ansible

scenario:
  name: default

Команды

Команда Описание
molecule init scenario Создание роли
molecule test Запустить полный цикл тестирования (обычно идет в pipeline как отдельный stage)
molecule create/destroy Создать/удалить тестовый инстанс
molecule lint/syntax Проверка правильности синтаксиса и линтеры
molecule converge Основная проверка провижининга роли

Использование

  1. Создаем роль Ansible ansible-galaxy role init my_role и переходим в созданную директорию cd my_role
  2. Создаем сценарий Molecule molecule init scenario -d docker devopslearning.nginx (где -d драйвер который мы хотим использовать; devopslearning название namespace а nginx название сценария)
  3. Внутри роли создается директория molecule с набором файлов для фаз тестирования