citius
Ну ок, дело хозяйское
Anton
А хранить секреты в гитлабе не заблочат? Лол
хранить секреты только команды в гитлабе
citius
Гитлаб с т.з. безопасности это даже не ноль, это жирный минус
citius
Но эт офтопик. Вам виднее. )
Anton
Все в хаши волте в моем случае, но можно и другое хранилище внешнее
если у вас есть время и желание - я бы с радостью увидел вашу статью про вашу идею
Dmitry
можно getent использовать
Тут скорее вопрос как обойтись без shell/command
Alex
что-то типа - getent: database: group key: sudo split: ',' - debug: msg: "{{item}}" with_items: "{{ lookup('dict', getent_group).value }}
inqfen
Ещё оттуда надо убрать nologin
inqfen
Чтобы всякие www-data не торчали там
Dmitry
То что надо
Sergey
это lInux-команда
Timur
А вы хорошо статью читали или вскользь?
Хорошо. Gitlab ci там не увидел в упор. Может, покажете, где это там спрятано?
Timur
Ну, и с сабмодулями тоже неясность
Timur
А, ещё и захардкоданные пароли в плейнтексте глаз резанули
Dmitry
getent passwd
Так я и подумал сначала что мне предложили шелануть ее вместо того говна со стак оверфлоу
Anton
Хорошо. Gitlab ci там не увидел в упор. Может, покажете, где это там спрятано?
Как реализовать: Репозитори и весь код для теста можно взять отсюда: https://github.com/patsevanton/ansible-gitlab-habr в коде все есть
Anton
Или думаете стоить расписать: base-bootstrap из https://github.com/patsevanton/ansible-gitlab-habr/tree/master/commons/base-bootstrap копируете в группу common ?
Anton
А что именно про сабмодули непонятно? Вот текст статьи В каждом репозитории (application, database, loadbalancer) создаем git submodule: git submodule add git@gitlab.example.com:common/base-bootstrap.git git submodule add git@gitlab.example.com:team/team-users.git
Anton
не написал зачем они нужны?
Anton
про без-сть там в конце P.S.
Anton
Он есть только application, database, loadbalancer
Anton
https://github.com/patsevanton/ansible-gitlab-habr/blob/master/team/application/.gitlab-ci.yml
Timur
не написал зачем они нужны?
Да, непонятно вообще - зачем они тут
Anton
Да, непонятно вообще - зачем они тут
Submodule нужно чтобы получить доступ к общему приватному репозиторию. В нашем случае это репозиторий с общими настройками base-bootstrap. дописал в статью
Timur
https://github.com/patsevanton/ansible-gitlab-habr/blob/master/team/application/.gitlab-ci.yml
Теперь вижу. Код очень странный. Суть вашего решения в том, чтобы показать, как ансиблом можно автоматически деплоить роли? Тогда зачем там этот странный код с баш-скриптами, сменой прав на директорию и генерацией ключа?
Anton
Теперь вижу. Код очень странный. Суть вашего решения в том, чтобы показать, как ансиблом можно автоматически деплоить роли? Тогда зачем там этот странный код с баш-скриптами, сменой прав на директорию и генерацией ключа?
Цель статьи: С помощью реализации в данной статье можно легко и просто настраивать/управлять большое количество серверов без сложной настройки Puppet/Chef серверов. Что именно странно?
Vlad
Зачем таким странным способом получать доступ к приватному репозиторию?
У гитлаба есть дока с описанием как нужно работать с ssh ключами: https://docs.gitlab.com/ee/ci/ssh_keys/
Anton
- ls base-bootstrap - ls base-bootstrap/vars для дебага
Timur
Исправьте образ докера
Anton
Так это не мой образ докера
Timur
Зачем эти костыли в gitlab ci?
Anton
Зачем эти костыли в gitlab ci?
Потому что без них не работало
Timur
Anton
Предложите образ. Я поменяю
Anton
С docker hub мне не подошли
Timur
Мне кажется, прежде чем выносить такие статьи в паблик, неплохо для начала добиться, чтобы решение работало без чудовищных костылей и хардкода на баше
Timur
Завтра попробую накидать более подробные замечания
Anton
А зачем вам и git submodules и ansible-galaxy?
Submodule нужно чтобы получить доступ к общему приватному репозиторию. В нашем случае это репозиторий с общими настройками base-bootstrap. дописал в статью
Vadim
спасибо, полезное замечание, только ansible-galaxy тоже умеет клонировать из гита
Vadim
не знаю зачем вам генерировать какие-то ключи если их можно просто смонтировать к контейнер
Anton
спасибо, полезное замечание, только ansible-galaxy тоже умеет клонировать из гита
даже если galaxy умеет с локальных репо - там везде приватные репозитории
Vadim
которые клонируются тем же гитом
Anton
которые клонируются тем же гитом
лучше писать полностью предложение
Timur
лучше писать полностью предложение
Надо переформулировать изначальную задачу. Вроде: Ребята, напишите за меня готовую статью по ansible и gitlab ci, чтобы я мог запостить ее на Хабр :)
Anton
И мог бы запустить на хабр
Timur
Запускайте, если хотите позориться с подобными костылями в коде
Anton
На самом деле некоторые люди помогли. Да и в конце есть P.S.
Timur
С docker hub мне не подошли
Зачем вам вообще докер в вашем случае?
Anton
Зачем вам вообще докер в вашем случае?
можно конечно установить на gitlab-runner ansible - но не знаю. мне кажется docker для того и нужен чтобы работать везде. тем более на gitlab-runner он обычно есть. а устанавливать дополнительный софт не хочется
Anton
Вы ставите докер, чтобы не ставить ансибл? Серьезно?
плюс у меня идея все job запускать в kubernetes - чтобы более рационально использовать ресурсы ВМ
Anton
Это вы так шутите опять?
нет. т.е. допустим есть gitlab-runner с 8GB ОЗУ. там можно запустить 1 job с executor SHELL (помойму 1 job) а в kubernetes - ограничение сколько запускать job - зависит от ОЗУ например можно запускать 7 паралельных Job на 8ГБ - примерно
Vadim
идея разумная, я обычно беру https://hub.docker.com/r/ansible/awx_task/ для такого
Anton
идея разумная, я обычно беру https://hub.docker.com/r/ansible/awx_task/ для такого
речь о baremetal чем эти докер образы отличаются? добавлением ПО для aws?
Anton
Я не понял. А что вам мешает запускать 7 параллельных джоб без докера?
там можно запустить 1 job с executor SHELL (помойму 1 job) - на 1 ВМ
Timur
Поймите правильно: я не против докера. Просто нужно понимать - зачем он нужен и какую задачу решает. Пока я такого понимания не вижу. Для одновременного запуска нескольких джоб раннером докер не нужен.
Anton
Кто вам это сказал?
Сколько запускал job - не помню чтобы они были параллельные. В документации такого тоже не нахожу