Роли это пример подняться по уровням абстракциям выше. Готового кейса не придумаю. В голову мне с натягом приходит вариант есть роль создания вм подключаемая через include_role куда скармливаются переменные, но это странно
Можно раскрыть мысль про «полное отсутсвие решений»?
Ок, не модули подменяем, а роли. Но здесь тогда привет: правис некий «глобал стейт» и нет возвращаемого значения.
У меня был в практике один проект где был оркестратор инфрой на ruby. Там под капотом дергался shell, и к этому был прикручен самописный тест фржймворк: мы в нем подменяли класс который дергал шел и вставляли моки.
с group_vars тоже финт ушами пробовали, но как-то не прижился. через delegated подход позволяет стать ближе к проду, но тогда это очень жестко приколачивает к существющим решениям. мы пока так не готовы и сидим на контейнерах.
вывод у меня напрашивается один с этого - в инфраструктуре не хватате(и не факт что будет) dependency injection, что обрекает тесты быть условными и/или черечур сложными и/или долгими
Мне очень не нравится идея ориентироваться на размер кода в гите при решении "что нужно тестировать". Бывают архиважные проекты из сотни-другой строчек, а бывают вполне себе ленивые помоечки на тысячи строк (про которые известно, что это помоечки), которые едва-едва тестируемы и это ок.
в целом валидно. поэтом и не возвожу это правило в абсолют, это на уровне рекомендаций. ведь ту же помоечку лучше пролинтовать и хотя бы прикрутить молекулу. пусть и с проблемами идемпотентности.
В моём представлении линтеры не являются тестами. Они хороши для того, чтобы затащить в проект наличие CI/CD (когда не знаешь с чего начинать - начинай с линтеров), но первый, основной тест, который нужно написать - это smoke test всего.
линтеры не тесты, но без них не получить быстрой обратной связи прям из в IDE своей не отходя от кассы.
Есть плейбука, которая "конфигурирует"? Сделай её на тестовый сервер с другой инвентори. (та же молекула, или даже прямо поверх второго сервера). Как бы уродливо оно не было, 90% проблем в плейбуках будут пойманы на этом этапе.
обычно молекулу прикручиваем: получаем smoke test, плюс можно не зависеть от тестовых серверов. единственное что в контейнерах есть порой дискомфорт, особенно если настраиваешь контейнеры, трогаешь ядро. приходится какие-то корявые заглушки ставить. вот были бы dependecy injection... зажили бы тогда
Если к ней приделать чуть-чуть инфра-тестов (testinfra) - получится уже вполне себе решение на котором можно долго жить. Тесты ролей имеют смысл только если роли большие и подразумевают переиспользование, по моим наблюдениям в большинстве случаев роли "per project" и спокойно тестируются в составе всего остального, без дополнительной бюрократии вида "отдельная репа для роли со своим CI".
И только если проект разрастается до больших размеров (больших == один человек всего уже не помнит), в этот момент можно думать про тесты для подсистем, просто для упрощения и ускорения процесса работы.
у меня так исторически сложилось, что на большинстве проектов монорепозитории и большинство ролей в одной репе. на каждую роль накидываем молекулу с ansible verifier И рефакторинг/расширение функционала/внесение изменений происходят плавно.
грузчики/водитель выламывают столбики(общедомовое имущество) что бы был заезд. тут наверно автоматически никак, если только запись с регистраторов. Конкретно в этом случае кто-то подал жалобу в ГЖИ, та в УМВД, которое усмотрело преступление или административное правонарушение и выдало КУСП
водитель заезжает на тротуарню плитку не предусмотренную для этого, жильцы оставляют жалобы и от управляющего магазина приходит гарантийное письмо восставноить как было.
как это можно купировать в ранней стадии?
предусматривать места разгрузки на стадии планирования магазина — тут уже сложно поменять что-то.
поставить регистраторы/камеры, подключить OCR и распознавать спорные ситуации — если ставить камеры 360 то это дорого, да и всегда можно неудачно встать, что проблемное место не будет видно. да и в конце концов можно приехать на место где уже выломано/подвинуто
по gps отслеживать отклонение от дорог общего пользования или заранее отмеченных красных зон. например отеъхал более чем на Х метров от дороги/красной зоны размеченной оператором, то это повод разобраться зачем и посмотреть видео с регистратора. условно дешево и сердито. есть систематичность и возможно неотвратимость наказания
мониторить обращения граждан(активный гражданин/наш санкт петербург) на предмет недовольства, строить корелляции с водителями на маршруте. в целом дешевое решение, но велика вероятность ложных срабатываний
резюмирая gps + мониторинг обращений может стать маркером для проведения проверки работы конкретного магазина с целью наведения порядка/взятия на контроль
yep. we continued our journey and migrated Hyper-v -> ESX. funny thing is that for that migration i'd to develop ansible module for ansible vmware collection.
молекулой можно тестить плэйбуки. но это не удобно. делаешь "мета-роль", в которую подсовываешь вместо converge.yml свой плэйбук. шатко, хлипко… я если честно таким образом плэйбуки не тестирую.
Но тут стоит прокомментировать, у меня плэйбуки обычно максимально простые: состоят из нескольких плэев, в которых нет тасков, только инклюд ролей. как итог достаточно тестить отдельные роли, а плэйбуки линтить. но подозреваю
а lookup выполнится на contorl машине где ansible-playbook Запущен? или на целевой?
не рута, а на кого become делается. если уж точнее
Роли это пример подняться по уровням абстракциям выше. Готового кейса не придумаю. В голову мне с натягом приходит вариант есть роль создания вм подключаемая через include_role куда скармливаются переменные, но это странно
Можно раскрыть мысль про «полное отсутсвие решений»?
Ок, не модули подменяем, а роли. Но здесь тогда привет: правис некий «глобал стейт» и нет возвращаемого значения.
У меня был в практике один проект где был оркестратор инфрой на ruby. Там под капотом дергался shell, и к этому был прикручен самописный тест фржймворк: мы в нем подменяли класс который дергал шел и вставляли моки.
например есть задача расширить диск, поправить LVM и создать swap. я бы хотел вместо диска подсунуть образ пустышку и заменить модуль создания lvm
с group_vars тоже финт ушами пробовали, но как-то не прижился. через delegated подход позволяет стать ближе к проду, но тогда это очень жестко приколачивает к существющим решениям. мы пока так не готовы и сидим на контейнерах.
вывод у меня напрашивается один с этого - в инфраструктуре не хватате(и не факт что будет) dependency injection, что обрекает тесты быть условными и/или черечур сложными и/или долгими
в целом валидно. поэтом и не возвожу это правило в абсолют, это на уровне рекомендаций. ведь ту же помоечку лучше пролинтовать и хотя бы прикрутить молекулу. пусть и с проблемами идемпотентности.
линтеры не тесты, но без них не получить быстрой обратной связи прям из в IDE своей не отходя от кассы.
обычно молекулу прикручиваем: получаем smoke test, плюс можно не зависеть от тестовых серверов. единственное что в контейнерах есть порой дискомфорт, особенно если настраиваешь контейнеры, трогаешь ядро. приходится какие-то корявые заглушки ставить. вот были бы dependecy injection... зажили бы тогда
у меня так исторически сложилось, что на большинстве проектов монорепозитории и большинство ролей в одной репе. на каждую роль накидываем молекулу с ansible verifier И рефакторинг/расширение функционала/внесение изменений происходят плавно.
А такая школа/институт/академия/курсы не подпадают под закон о просветительской деятельности? Или вы прям заморочились и получили лицензию?
в чем проблемы:
как это можно купировать в ранней стадии?
резюмирая gps + мониторинг обращений может стать маркером для проведения проверки работы конкретного магазина с целью наведения порядка/взятия на контроль
не все так однозначно.
А вы не планируете сделать трекинг нарушений пдд, в частности езду/разгрузку на тротуаре?
У меня процесс выглядит так:
такую схему уже года 3 использую
а как рисовали карту покрытия?
Терраформ экспортит ровно то, что вы указали. Укажите все хосты — будут все.
ansible-playbook -i $(terraform output hosts_list) play_me.yml
Но есть особенность — вы когда используется hosts_list не прлучится забрать host/group inventory vars с диска
Вообще есть еще 3ий вариант интеграции через встроенный host_list inventory plugin https://docs.ansible.com/ansible/latest/collections/ansible/builtin/host_list_inventory.html
А Как начать тестировать Ansible, отрефакторить проект за год и не слететь с катушек не отвечает на этот вопрос? у меня там задумка была показать историю развития:
yep. we continued our journey and migrated Hyper-v -> ESX. funny thing is that for that migration i'd to develop ansible module for ansible vmware collection.
молекулой можно тестить плэйбуки. но это не удобно. делаешь "мета-роль", в которую подсовываешь вместо converge.yml свой плэйбук. шатко, хлипко… я если честно таким образом плэйбуки не тестирую.
Но тут стоит прокомментировать, у меня плэйбуки обычно максимально простые: состоят из нескольких плэев, в которых нет тасков, только инклюд ролей. как итог достаточно тестить отдельные роли, а плэйбуки линтить. но подозреваю
строго говоря картинка про неприличное слово была немного другая, интересно кто какой смысл из нее возьмет...
строго говоря, корректней считать БЖУ т.к. можно сжечь по минимуму мышц.