Ответ
Да, я тестирую Ansible-плейбуки. Хотя плейбуки часто более специфичны для инфраструктуры, чем роли, их тестирование не менее важно для предотвращения регрессий. Я использую комбинацию инструментов:
- Molecule: Для прогона плейбуков в изолированном окружении и проверки ключевых сценариев.
- Ansible-lint: Для проверки синтаксиса, использования устаревших модулей и следования соглашениям.
- Проверка идемпотентности: Запуск плейбука дважды и убеждение, что на втором прогоне не было изменений (
changed=0).
Пример теста идемпотентности в Molecule:
# Задача в converge playbook для проверки
- name: Ensure idempotence check
block:
- name: Run the playbook a second time for idempotence
command: ansible-playbook site.yml
register: second_run
changed_when: false
- name: Fail if changes were reported on the second run
fail:
msg: "Playbook is not idempotent! Changes detected on second run."
when: second_run.stdout | regex_search('changed=[1-9]')
Для сложных плейбуков, разворачивающих целые среды (например, кластер Kubernetes), я создаю отдельные тестовые стенды и запускаю на них smoke-тесты, проверяющие доступность критических сервисов.