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