- PVSM.RU - https://www.pvsm.ru -
Доброго времени суток. На Хабре не раз упоминался ansible, но статей о тестировании его ролей при помощи molecule мной обнаружено не было, однако Я нахожу данный фреймворк крайне удобным и хотел бы поделиться этим с аудиторией Хабра.

Но для начала немного о том, чем я пользовался прежде.
Прежде для тестирования создаваемых мной ролей ansible я использовал vagrant, вбивая незамысловатые:
$ vagrant init debian/jessie64
$ vagrant up
Создавая виртуальные машины, после чего писал inventory и playbook для запуска роли, пока однажды мне не довелось познакомиться с molecule.
В случае указания новой роли создает типовую структуру для роли ansible
Molecule позволяет нам использовать в качестве подопытного кролика либо Docker-контейнер, либо виртуальную машину посредством Vagrant-а определяется это указанием driver-а при инициализации, либо в molecule.yml. Т.к. мне приходится тестировать роли оркестрирующие контейнеры, то предпочтительным для меня в качестве driver-а остается Vagrant. Выбор Vagrant-а в качестве driver-а так же позволяет выбрать Provider-а.
Доступны следующие:
Далее будет рассматриваться вариант Vagrant-а с VirtualBox в качестве provider-а.
Cогласно wiki:
свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при одинарном.
Применительно к ролям ansible — при повторном запуске роли не должно произведено каких-либо изменений.
Для того, что бы убедиться в том, что роль отработала должным образом — не завалить какой-либо из task-ов недостаточно. Ведь необходимо проверить, что сервисы стартовали, порты открыты и т.д.
Для верификации доступны следующие фреймворки:
Мной были опробованы Goss и Testinfra. Для себя я выбрал Testinfra.
Пример использования:
$ molecule init --role sample-role
После выполнения данной комманды мы получаем дирректорию sample-role c типичной для роли ansible структурой и необходимыми yaml-файлами:
defaults
handlers
meta
molecule.yml // конфиг-файл для molecule
playbook.yml // плэйбук для запуска нашей роли
README.md
tasks
tests // скрипты для верификации
vars
Можно запустить без указания ключа --role, в этом случае буду созданы файлы molecule.yml и playbook.yml в текущей дирректории.
Бывает, что требуется обеспечить работу роли на нескольких дистрибутивах в этом случае в molecyle.yml стоит указать имена box-ов vagrant-а (в platforms):
vagrant:
platforms:
- name: jessie64
box: debian/jessie64
- name: centos7
box: centos/7
Далее добавляем необходимые действия/переменные и т.д. в роль, после чего тестируем на всех определенных платформах:
$ molecule test --platform all
После этого molecule:
Может потребоваться изменить поведение molecule при запуске test, например не производить тест на идемпотентность, для этого в molecule.yml стоит добавить следующее:
molecule:
test:
sequence:
- destroy
- syntax
- create
- converge
- verify
- destroy
Так же можно вызывать каждый из соответствующих шагов отдельно при помощи соответствующей комманды, пример:
$ molecule create --platform all
$ molecule syntax
$ molecule create
$ molecule converge
$ molecule verify
Как один из вариантов — не удалять/создавать новую виртуальную машину перед каждым converge.
Можно указать определенную platform-у и протестировать ее отдельно:
$ molecule create --platform jessie64
$ molecule syntax
$ molecule create
$ molecule converge
$ molecule verify
Спасибо за внимание!
Автор: pull
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/254123
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/sandbox/108904/
Нажмите здесь для печати.