Aleksey
Может динамически формируете?
Aleksey
надо динамически, делаем динамически, если окружение в гугле то gcp_compute
Aleksey
если 5 серверов то в репе
Aleksey
если в авс то в авс
Aleksey
А если часть серверов в гугле, часть серверов в авс, а часть вообще dedicated на каком-нибудь хостинге без апи?
Aleksey
то часть инвентори будет там, часть там, а часть вообще в текстовом редакторе и всё это будет в репе с описанием методик подключения
Aleksey
нет общего решения. каждое индивидуально под проект
Aleksey
ок, спасибо!
Aleksey
если запускать плейбуки будете из ci то оный должен знать как подключиться к каждому серверу
Aleksey
а если с локалхоста то пофиг.
Aleksey
из ci
Aleksey
ну у вас же скорее всего все три локации это разные окружения
Aleksey
если inventory будет статичный, как-то не хочется его помещать в основной репозиторий
Aleksey
так запускайте их в трех разных джобах и деплойте отдельно
Aleksey
ну это же настройки
Aleksey
можно так сказать
Aleksey
настройки окружения, они же разные бывают, prod, stage, dev...
Aleksey
чего им делать в репозитории?
Aleksey
ну например версионироваться..
Vlad
которую в космос на вояджере отправили
Сохранили в арктическом хранилище
Aleksey
это да
а куда бы вы хотели положить ? в какую то вебморду ?
Aleksey
а куда бы вы хотели положить ? в какую то вебморду ?
пожалуй, я бы наверно хотел отдельно хранить код инфраструктуры от кода приложений, ну а инвентори наверно как часть конфигурации будет удобнее всего
Aleksey
дак положите роли в одну репу. по одной репе на каждую роль. плейбуки в вторую репу. инвентори в вторую репу
Aleksey
и код у вас будет отдельно а конфигурация отдельно
Aleksey
и морду можно взять
Aleksey
хитрую рыжую
Aleksey
под названием gitlab
Aleksey
роли храните как код и тестируйте как код
Aleksey
молекулой
Aleksey
а плейбуки и инвеонтори тестируйте как конфиги.
Aleksey
тоесть на стейдж окружениях
Aleksey
Я вижу смысл выделять в отдельный репозиторий полезные роли, которые могут быть повторно использованы. В рамках другого проекта.
Aleksey
никогда не угадаете какие будут полезны
Aleksey
но я не geerlingguy, я пока так не умею
Aleksey
смотрите это просто. mkdir ansible-role-herya cd ansible-role-herya git init . git commit -a -m "Initial" git push origin master
Aleksey
или сразу лучше molecule init role ansible-role-hernya
Aleksey
и погнали
Aleksey
Я мало использую свои роли, в основном пишу таски прям в плейбуке, мне так удобнее.
Aleksey
аа.
Aleksey
Неправильно выразился, свои роли я использую, но только когда они не проектоориентированные
Aleksey
забудте всё что я вам выше говорил.
Aleksey
когда я могу их вынести отдельно и использовать повторно
Aleksey
я слышал яндекс постоянно набирает водителей
Aleksey
🙂 смешно
Aleksey
хорошо приведите пример роли ansible-role-*
Aleksey
кроме hernya
Aleksey
ansible-role-fix-chrony.
Aleksey
роль из одного таска.
Aleksey
потом тасков стало 3
Aleksey
fix-chrony это что?
Aleksey
ansible-role-common-sre
Aleksey
ansible-role-victoria-metrics
Aleksey
ansible-role-init-disk
Aleksey
остановимся на одной
Aleksey
fix-chrony это что?
такая роль что бы взять и починить chrony в гугле.
Aleksey
добавляет оному авторестарт и делает его сервером для 127.0.0.1
Aleksey
один вызов blockinfile, один на создание диры, один на copy c контент
Aleksey
я с этим не согласен. Роль - это не задача. То что вы назвали это задача
Aleksey
хорошо. не задача так не задача
Aleksey
однако её легко прицепить к проекту. к любому
Aleksey
ansible-role-nginx
Aleksey
легко протестровать
Aleksey
вот это например роль
Aleksey
а это не роль а какой то адок.
Aleksey
ничего не мешает для создания роли webserver использовать 2 десятка ролей более мелких
Aleksey
вот вообще
Aleksey
просто будет play у которого будет hosts: webservers roles: - - -
Андрей
а еще можно роли с vars
Aleksey
а еще можно роли с vars
а что можно без варс ?
Андрей
hosts: webservers roles: - {role_1: var } - -
Aleksey
просто будет play у которого будет hosts: webservers roles: - - -
это очень сложно поддерживать, многословно
Aleksey
это очень сложно поддерживать, многословно
ямль это не про экономить буквы
Aleksey
если нужно поставить nginx, можно заюзать соответствующую роль, они уже есть
Aleksey
вообще многословность это не то что бы болезнь
Aleksey
если нужно поставить nginx, можно заюзать соответствующую роль, они уже есть
а если роль состоит из 3 сотен тасков как вы для нее напишите тесты ?