Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save patsevanton/d6e7988da1f47a55f2395d4835a4530b to your computer and use it in GitHub Desktop.
Save patsevanton/d6e7988da1f47a55f2395d4835a4530b to your computer and use it in GitHub Desktop.
Тестирование ролей ansible
Lev Goncharov:
люди добрые. расскажите кто как тестирует свои роли в ansible?
Я пробовал разные подходы
- при тестирование развертывания SDS (software-defined storage): gitlab / vagrant / ruby / docker / bash / ansible / serverspec / virtualbox ~60 фактически на интеграционные тесты развертывания.
- test Ansible roles: ansible / hyper-v / jenkins / testkitchen / inspec ~40-70 минут для 25-35 ролей.
- test Ansible roles: ansible / docker / jenkins / molecule / testinfa ~20-25 минут для 50-55 ролей.
С моей колокльни это все медленно. И пришел к пирамиде тестирования инфраструктуры
static - shellcheck/ansible lint
unit - molecule/kitchen + testinfra/inspec для отдельных базовых ролей
integration - проверяем конфиг сервера состоящий из множества ролей настраивается правильно. molecule/kitchen
e2e - что множество серверов работают правильно. нет готового только боль и страдание
Вобщем, кто может рассказать/научить как надо делать правильно?
P.S. что есть по теме тестирования почитать\посмотреть:
* 2019 что я узнал протестировав 200 000 строк инфраструктурного кода
* 2018 5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code
* 2018 Integrating Infrastructure as Code into a Continuous Delivery Pipeline
* 2018 Эффективная разработка и сопровождение Ansible-ролей
* 2018 Ansible — это вам не bash!
* 2018 Test me if you can. Do YML developers Dream of testing ansible?
* 2017 How-to test your own OS distribution
* 2015 Тестируем инфраструктуру как код
George Gaál:
Как думаете - что является узким местом? Скорость обработки ансибловых сценариев?
Gleb Mekhrenin:
ансибл параллельно митогеном ок катитстя
вмки надо поднимать из гипервизора на флеше
serocco:
очень хороший пост. большое спасибо! приятно это видеть
PY2 уже потихоньку отмирает. tox в этом плане помогает проверить на PY2, PY3
Gleb Mekhrenin:
ну вопрос в том чтотю е2е гонять надо не в реалатайме все же
serocco:
мне было приятно увидеть, что человек проделал большую работу и только после этого попросил помощи/совета
Gleb Mekhrenin:
с интеграционными мало боли когда грамотно росли нарезанные и абстракции не протекают
serocco:
если смотреть глобально, то думаю, будет полезен опыт CI/CD самого проекта ansible. все же ранг 88 из github проектов
"- test Ansible roles: ansible / docker / jenkins / molecule / testinfa ~20-25 минут для 50-55 ролей."
можно поробовать заменить jenkins awx
Lev Goncharov:
Имхо
1. развёртывание инфры под это все дело(решается параллельностью)
2. Сами сценарии(оракл ставится минут 30, например), тут полагаю ловить как можно раньше хз что делать вобщем
serocco:
20-25 минут для таких вещей это норм. можно еще добавить мутаген, но он работает иначе.
есть специфика
в основном связана с циклами и порядком выполнения того, что пихаешь в циклы (например, loop)
Lev Goncharov:
Но,
1. там е2е мало
2. Оно внутри докера, а не вм
А вобще цифрами поделиться есть какими?
serocco:
это не баг мутагена, это иное виденье
на процесс исполнения...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment