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 |
Основная проверка провижининга роли |
Использование
- Создаем роль Ansible
ansible-galaxy role init my_roleи переходим в созданную директориюcd my_role - Создаем сценарий Molecule
molecule init scenario -d docker devopslearning.nginx(где -d драйвер который мы хотим использовать; devopslearning название namespace а nginx название сценария) - Внутри роли создается директория
moleculeс набором файлов для фаз тестирования