molecule - AlBichutsky/wiki GitHub Wiki
Установка с помощью pip python 3.6
В requirements.txt указал устаналиваемые пакеты.
ansible>=2.4
molecule>=2.6
testinfra>=1.10
python-vagrant>=0.5.15
# Установка
python3.6 -m pip install -r requirements.txt
# Удаление (при необходимости)
python3.6 -m pip uninstall -r requirements.txt
На моей машине в centOS7 бинарники для python3.6 устанавливаются через pip в /usr/local/bin, поэтому добавил путь в переменную $PATH. Все пакеты будем использовать для версии 3.6. (более свежая версия)
Важно: бинарники для python2.7 устанавливаются через pip в /usr/bin (более приоритетно), поэтому, чтобы не было конфликтов удалим данные пакеты, чтобы к ним не обращаться. Если имеются другие верси pip < 3.6, то их также рекомендуется удалить:
python -m pip uninstall -r requirements.txt
python2 -m pip uninstall -r requirements.txt
python2.7 -m pip uninstall -r requirements.txt
python3 -m pip uninstall -r requirements.txt
python-3.6 -m pip uninstall -r requirements.txt
Установка доп.пакетов для molecule.
python3.6 -m pip install --user "molecule[docker,lint]"
python3.6 -m pip install "molecule-vagrant"
Выяснилось, что в новой версии уже не используется пакеты testinfra, pytest'. Вместо них надо использовать pytest-testinfra`
python3.6 -m pip uninstall "pytest"
python3.6 -m pip uninstall "testinfra"
python3.6 -m pip install "pytest-testinfra"
Проверить установленные пакеты в pip на предмет удволетворяемых зависимостей:
python3.6 -m pip check
$ No broken requirements found.
Комманды molecule:
# Переходим в каталог с ролью ansible
cd ansible/roles/db
# Инициализируем сценарий для готовой роли db с помощью vagrant
molecule init scenario default --role-name db --driver-name vagrant
# Создаем ВМ для проверки роли
molecule create
# Проверяем название ВМ
molecule list
INFO Running default > list
╷ ╷ ╷ ╷ ╷
Instance Name │ Driver Name │ Provisioner Name │ Scenario Name │ Created │ Converged
╶───────────────┼─────────────┼──────────────────┼───────────────┼─────────┼───────────╴
instance │ vagrant │ ansible │ default │ true │ false
# Подключиться к ВМ с именем instance
molecule login -h instance
# Применить плейбук (converge.yml), в котором вызывается роль к созданному хосту
molecule converge
# Запустить тесты через testinfra (в `molecule.yml` указазано `name: test-infra`):
molecule verify
INFO default scenario test matrix: verify
INFO Running default > verify
INFO Executing Testinfra tests found in /home/devops-course/11-ansible4/AlBichutsky_infra/ansible/roles/db/molecule/default/tests/...
============================= test session starts ==============================
platform linux -- Python 3.6.8, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: /
plugins: testinfra-6.1.0
collected 2 items
molecule/default/tests/test_default.py .. [100%]
============================== 2 passed in 3.02s ===============================
INFO Verifier completed successfully.
# Выполнить тестирование экземпляра
molecule test