Ansible Molecule#

Утилита Ansible Molecule является универсальным инструментом для разработки и тестирования ролей Ansible. Для этого она предоставляет несколько команд с различными аргументами, описание которых приводится далее.

Вызов утилиты имеет следующий вид:

molecule [<options>] <command> [<arguments>]

Здесь:

  • <options> – аргументы утилиты;

  • <command> – команда;

  • <arguments> – аргументы команды.

Возможные аргументы утилиты:

--help#

Вывод справочной информации о командах и аргументах Ansible Molecule.

--version#

Вывод информации о версии Ansible Molecule.

--debug, --no-debug#

Включение или отключение режима отладки. По умолчанию отключен.

-v, --verbose#

Увеличение уровня детализации Ansible. Значение по умолчанию – 0.

--c, --base-config TEXT#

Путь к базовой конфигурации (можно указать несколько раз). Если указан, Ansible Molecule выполнит в указанном порядке слияние настроек и слияние внутри каждого сценария. По умолчанию Ansible Molecule ищет файл .config/molecule/config.yml в текущем каталоге, и если не найдет, будет искать в домашнем каталоге пользователя.

-e, --env-file TEXT#

Имя файла с переменными, используемыми при обработке файла настроек. Значение по умолчанию – .env.yml.

Команды#

При запуске Ansible Molecule можно использовать следующие команды.

check#

Эта команда позволяет увидеть, что будет сделано, не внося изменения в тестовую среду. Она приводит к выполнению следующих команд:

  1. destroy;

  2. dependency;

  3. create;

  4. prepare;

  5. converge.

Синтаксис команды:

molecule check [-s, --parallel, --help]

Подробное описание аргументов команды см. ниже.

cleanup#

Эта команда выполняет очистку любых изменений, внесенных в тестовую среду во время выполнения тестов. Обычно используют для возвращения системы в исходное состояние. Синтаксис команды:

molecule cleanup [-s, --help]

Подробное описание аргументов команды см. ниже.

converge#

Эта команда настраивает тестовые среды, выполняя следующие команды:

  1. dependency;

  2. create;

  3. prepare;

  4. converge.

Синтаксис команды:

molecule converge [-s, --help]

Подробное описание аргументов команды см. ниже.

create#

Эта команда создает тестовые среды. Синтаксис команды:

molecule create [-s, -d, --help]

Подробное описание аргументов команды см. ниже.

dependency#

Эта команда выполняет установку необходимых зависимостей перед выполнением тестирования. Синтаксис команды:

molecule dependency [-s, --help]

Подробное описание аргументов команды см. ниже.

destroy#

Эта команда удаляет тестовые среды. Синтаксис команды:

molecule destroy [-s, -d, --all, --parallel, --help]

Подробное описание аргументов команды см. ниже.

drivers#

Эта команда отображает список доступных драйверов. Синтаксис команды:

molecule drivers [-f, --help]

Аргументы команды:

-f, --format [simple|plain]#

Формат вывода. Значение по умолчанию – simple.

idempotence#

Эта команда выполняет настройку тестовых сред и проверку идемпотентности. Синтаксис команды:

molecule idempotence [-s, --help]

Подробное описание аргументов команды см. ниже.

init#

Эта команда создает структуру каталогов и файлов, необходимых для работы Ansible Molecule с новой ролью или сценарием. Синтаксис команды:

molecule init [--help, scenario] [--dependency-name, -d, --provisioner-name]

Подробное описание аргументов команды см. ниже.

list#

Эта команда показывает статус тестовых сред. Синтаксис команды:

molecule list [-s, -f, --help]

Аргументы команды:

-f, --format [simple|plain]#

Формат вывода. Значение по умолчанию – simple.

Подробное описание аргументов команды см. ниже.

login#

Эта команда позволяет войти в тестовую среду. Синтаксис команды:

molecule login [-h, -s, --help]

Подробное описание аргументов команды см. ниже.

matrix#

Эта команда отображает матрицу шагов, используемых для тестирования. Синтаксис команды:

molecule matrix [-s, --help]

Подробное описание аргументов команды см. ниже.

prepare#

Эта команда подготавливает тестовые среды к выполнению тестов. Синтаксис команды:

molecule prepare [-s, -d, -f --help]

Аргументы команды:

-f, --force, --no-force#

Включить или отключить режим принудительного выполнения. По умолчанию выключен.

Подробное описание аргументов команды см. ниже.

reset#

Эта команда возвращает временные каталоги Ansible Molecule в исходное состояние. Синтаксис команды:

molecule reset [-s, --help]

Подробное описание аргументов команды см. ниже.

side-effect#

Эта команда позволяет выполнить действия, которые не входят в основное применение роли. Синтаксис команды:

molecule side-effect [-s, --help]

Подробное описание аргументов команды см. ниже.

syntax#

Эта команда проверяет синтаксис файлов роли. Синтаксис команды:

molecule syntax [-s, --help]

Подробное описание аргументов команды см. ниже.

test#

Эта команда запускает полный цикл тестирования. Синтаксис команды:

molecule test [-s, -p, -d, --all, --destroy, --parallel, --help]

Подробное описание аргументов команды см. ниже.

verify#

Эта команда выполняет проверку состояния тестовых сред после тестирования. Синтаксис команды:

molecule verify [-s, --help]

Подробное описание аргументов команды см. ниже.

Описание аргументов команд#

Команды Ansible Molecule поддерживают следующие аргументы:

--all / --no-all#

Выполнение команды для всех сценариев. По умолчанию выключено (--no-all).

-d, --driver-name [default|molecule_brest|molecule_yandexcloud|podman]#

Название используемого драйвера. Значение по умолчанию – default.

--destroy [always|never]#

Политика удаления тестовых сред после завершения тестов:

  • always – удалять после каждого теста (по умолчанию);

  • never – не удалять.

-h, --host TEXT#

Узел для подключения.

-p, --platform-name TEXT#

Название платформы для тестирования. Значение по умолчанию – None.

--parallel / --no-parallel#

Включение или отключение параллельного режима. По умолчанию отключен.

-s, --scenario-name TEXT#

Название используемого сценария. Значение по умолчанию – default.

scenario#

Название инициализированного сценария. Значение по умолчанию: default. Возможные дополнительные аргументы:

--dependency-name [galaxy]#

Название используемой зависимости. Значение по умолчанию – galaxy.

-d, --driver-name [default|molecule_brest|molecule_yandexcloud|podman]#

Название используемого драйвера. Значение по умолчанию – default.

--provisioner-name [ansible]#

Название используемого исполнителя сценариев. Значение по умолчанию – ansible.

Файл настроек#

Для настройки Ansible Molecule используется файл molecule.yml. В нем описывается, как и где будет выполнятся тестирование ролей. Он может содержать следующие параметры:

  • драйвер;

  • зависимости;

  • исполнитель сценариев;

  • платформы;

  • средства проверки;

  • сценарии.

Драйвер#

Драйвер указывает какой инструмент утилита будет использовать для создания тестовой среды. Драйвер может быть изменен в командной строке. Утилита запоминает последний использованный драйвер и будет использовать его для всех последующих команд или до тех пор, пока не будут удалены тестовые среды.

Пример заполнения:

driver:
  options:
    managed: False
    login_cmd_template: "podman exec -ti {instance} bash"
    ansible_connection_options:
      ansible_connection: podman

Возможные параметры:

name#

Название используемого драйвера.

options#

Дополнительные параметры для настройки драйвера:

managed#

Указывает, должна ли утилита управлять созданием и уничтожением тестовой среды:

  • True – утилита управляет тестовой средой (по умолчанию);

  • False – управление передается внешнему инструменту.

login_cmd_template#

Шаблон команды для входа в тестовую среду.

ansible_connection_options#

Настройки соединения, которые будут использоваться для взаимодействия с тестовой средой.

Возможные опции:

ansible_connection#

Тип соединения.

Зависимости#

Для указания пути к файлу зависимостей используются параметры role-file и requirements-file. Если необходимо указать путь к файлу ролей, то используется параметр role-file. Если необходимо установить коллекции, то используйте параметр requirements-file.

Пример заполнения:

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

Возможные параметры:

name#

Тип зависимости:

  • galaxy – для загрузки зависимостей из Ansible Galaxy.

  • shell – для выполнения произвольных shell-команд.

enabled#

Указывает, следует ли включить управление зависимостями:

  • True (по умолчанию);

  • False.

options#

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

ignore-certs#

Указывает, следует ли игнорировать ошибки, связанные с сертификатами SSL при загрузке зависимостей:

  • True;

  • False.

ignore-errors#

Указывает, следует ли игнорировать ошибки, возникающие при загрузке зависимостей:

  • True;

  • False.

role-file#

Указывает файл, содержащий список ролей, которые необходимо загрузить.

requirements-file#

Указывает файл, содержащий список коллекций Ansible, которые нужно установить.

command#

Команда, которую нужно выполнить для управления зависимостями. Только для типа зависимости shell.

Исполнитель сценариев#

Ansible является исполнителем по умолчанию. Утилита управляет жизненным циклом тестовых сред. Однако пользователь может предоставить сценарии для выполнения этапов. Для этого в параметре playbooks необходимо указать путь к файлу, содержащему сценарий выполнения этапа.

Пример заполнения:

provisioner:
  name: ansible
  playbooks:
    create: create.yml
    converge: converge.yml
    destroy: destroy.yml

Платформы#

Платформы определяют тестовые среды и группы, к которым они относятся. Можно использовать несколько тестовых сред.

Пример заполнения:

platforms:
  - name: molecule-astra
    image: hub.astra-automation.ru/aa/aa-base-ee

Возможные параметры:

name#

Название тестовой платформы.

image#

Образ контейнера, который будет использоваться для платформы.

privileged#

Указывает, нужно ли запускать контейнер в привилегированном режиме.

groups#

Группы, к которым принадлежит платформа.

Средства проверки#

Утилита производит тестирование с помощью настраиваемых средств проверки. Ansible является средством проверки по умолчанию.

Пример заполнения:

verifier:
  name: testinfra

Возможные параметры:

name#

Название средства проверки:

enabled#

Указывает, нужно ли включить тестирование:

  • True;

  • False.

directory#

Путь к тестовому каталогу.

Сценарии#

Сценарий определяет этапы, которые будут выполняться в рамках тестирования. Сценарий по умолчанию – default.

Пример заполнения:

scenario:
  test_sequence:
    - dependency
    - cleanup
    - destroy
    - syntax
    - create
    - prepare
    - converge
    - idempotence
    - side_effect
    - verify
    - cleanup