Max
т.к. код проходит валидацию, ты спокоен.
Max
позволяешь людям с чешащимися ручками принести пользу.
Max
у тебя освобождается время на более интересные задачи... в носу поковырять. в отпуск съесздить....
Max
или что то новое сделать.
Алексей
ок, кейсы понятны.
У меня теперь другой вопрос. у меня в репке инфры лежит всё и инвентари и роли.
Насколько это криво и насколько лучше для ролей делать отдельные репки?
Max
адресацию например автоматизировать....
Max
полезнее делать роль в своей репе.
Max
но зависит от организации
Max
роль в репе получает версию
Max
т.е. ты можешь в одних плейбуках использовать старую версию, в других более новую.
Max
и не сломать старые плейбуки.
Max
если пользователи ролей пишут свои плейбуки, это единственный способ быть вменяемым.
Алексей
Max
т.е репу роли после валидации тестов тэгать сможет ci.
Алексей
схема простая - есть один плейбук.
В нём указаны все роли.
Есть массив в которой указан список ролей
Переменная с массивом добавляется на группу хостов или в all
в ролях есть гарды которые проверяют наличие имени роли в массиве
Алексей
Max
Max
Алексей
Max
код ревью делает человек.
Алексей
а, вононочёмихалыч
Max
читай: https://docs.ansible.com/ansible/latest/reference_appendices/galaxy.html#installing-multiple-roles-from-a-file
Алексей
ясно, в общем нужно пробовать выделять роли, прикручивать тесты и тд
Max
можешь для начала просто новые роли покрывать, потом старые вынеси в свои репы.
Max
гит сервис какой у вас ?
Max
гитхаб? ведробит? гитлаб?
Алексей
Алексей
гитлаб
Max
ну создай "группу" ролей.
Алексей
ну да, понятно
Max
и ступай, ступай ;)
Max
🤣
Алексей
Спасибо за объяснения, нужно свой колхоз перепиливать
Max
не революция, эволюция.
Max
маленькими шажками.
Max
👍🏾
Алексей
А requirements.yml можно же под каждую группу хостов свой же создать и каждой группе своё подкидывать получается
Max
я не знаю как вы там плэйбуки пишете, и на кой вам нужны валидации (гарды)
Max
вы ансибл запускаете откуда и как ?
Алексей
ну смотри у меня в инвентаре под сотню хостов. Они раздлелены на группы. Я хочу прогнать все хосты одномоментно, но мне нужно, чтобы на каждом хосте/группе выполнялись только нужные там роли (какие то общие и какие то специфические)
Например на фронтах мне не нужно разворачивать базу и наоборот.
Max
(я обычно привязываю reqs к плэйбуку)
Max
Алексей
Max
Max
плейбука должна быть простой и "глупой":
- name: setup dbs
hosts: dbs
roles:
- role: dbsetup
- role: dbdataload
- name: setup web
hosts: web
roles:
- role: websetup
- role: websslenable
Алексей
ну мне по крайней мере удобно, на данный момент
Max
если нужна фрагментация, лучше не заморачиваться с тэгами, а разбивать последовательность на отдельные плейбуки.
Max
имхо
Алексей
гард не в плейбуке, гард в роли
Алексей
плейбук вообще простой
Алексей
---
- hosts: all
vars:
ansible_user: "root"
roles:
- 00_preconf
- 12_zabbix
....
- newrelic-npi
- rsyslog
- users
Max
нормал.
Max
но все хосты запускают все роли?
Алексей
нет. Только то что указано в vRoles
Max
или ты решаешь внутри роли запускаться или нет ?
Max
это и есть плохо
Алексей
Гард внутри роли стоит.
Алексей
чем плохо?
Max
роль не должна это решать. она может решить, что только на одном хосте что то запустить.
Max
плейбук должен решать на каком хосте запускать роль по критерию hosts:
Алексей
она и не решает. решаю я
Max
ни он ни она ничего не решают
Max
но контроль таргетами рекомендуется делать на уровне плейбука.
Max
а не роли.
Алексей
конечно, если я в vRoles yt lj,fdk. nj jyf b yt jnhf,jnftn
greydjin
что за vRoles?
Max
это дублирование функционала
Алексей
а я не хочу десять плейбуков иметь. Я хочу один и рулить всем через переменные хостов/групп
Max
Алексей
я сделал
Max
но в нем 10 плеев/
Max
или 10 плейбуков на разные группы
Max
и их импортировать в один единый
Алексей
ок, как вынести общие роли и для каждой группы ещё доп роли запускать?
Sergey
Max
можно по разному.