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
#
Эта команда позволяет увидеть, что будет сделано, не внося изменения в тестовую среду. Она приводит к выполнению следующих команд:
Синтаксис команды:
molecule check [-s, --parallel, --help]
Подробное описание аргументов команды см. ниже.
cleanup
#
Эта команда выполняет очистку любых изменений, внесенных в тестовую среду во время выполнения тестов. Обычно используют для возвращения системы в исходное состояние. Синтаксис команды:
molecule cleanup [-s, --help]
Подробное описание аргументов команды см. ниже.
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#
Шаблон команды для входа в тестовую среду.
Зависимости#
Для указания пути к файлу зависимостей используются параметры 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