Игорь Пинчук
Ну так их учить надо а не стебатся и занижать уровень требований
угу. Все конторы ломанулись обучать людей английскому.
bebebe
ну что получил работяга понятно, не ясно только стало ли это полезно для тебя и остальных
профит для меня - я перестал делать мелкие измнения и просто делаю review Pull Request и мержу. профит для работяги - большее понимание того что происходит, что так же сократило количество обращений ко мне.
Vadim
fair enough
bebebe
но до сих пор когда вижу кириллцу в коммит-мессаджах, мне становится немного по не по себе
Игорь Пинчук
Регионы?
не только. Москва тоже.
bebebe
Сложнее всего с issue на gh
там связка jenkins + gerrit + k8s, в gerrit'e проблем нет, проект приватный, в опенсурц не уйдет
Aleksey
Ладно тут это всё очень офтоп
Sergey
Ладно тут это всё очень офтоп
не оффтоп вроде - закавычивание кириллической строки воооооон там сверху
Sergey
тогда внутри ансибла это действительно превращается в unicode, и всё в ажуре
Sergey
главное - не заниматься фигнёй с минусами вот, скобками, вот этим вот всем
Artem
Жёсткий антипатерн. Выполнить скрипт на удаленном хосте используя shell: ssh host script.sh. как при этом форварднуть агент на удаленный хост?
Artem
Угу понял спс
Asten
В продолжение треда про vault, я вот с коллегами уже изрядно постучался с ним
Asten
Как только найду время буду ковырять vault от hashicorp
Asten
*помучался
Asten
Самое жестокое это мерж)
Asten
Расскажите о нем, есть опыт?
Пока нет, только доку мельком читал, но vault от ансибла точно не лучшее решение для более менее больших проектов
Asten
Раскройте эту мысль?
Про не лучшее решение?
bebebe
Да
Asten
Ну смотрите, когда в ансибл репозиторий пушит много людей а мержить имеют право не все возникают конфликты
Asten
Я про зашифрованные полностью файлы
Asten
Частично удалось решить проблему 2 вещами:
Asten
1) секреты для сервисов (то что не нужно людям) шифруются в vars как encrypted string
Asten
2) если нужно в зашифрованный файл что-то положить это пугает отдельным pr и тут же пинают тех кто может мержить
Asten
Не очень впечатляет длинна путей до секретов когда у тебя несколько окружений
Asten
Тоесть сейчас это /inventory/имя_окружения/group_vars/all/secrets.yml
bebebe
Хм. Я понял о чем вы говорите и не думаю что это большая проблема чтобы смотреть в другую сторону
Asten
Ну и последнее: по невнимательности теряли секреты на мержах
Asten
Ну говорю, я сейчас не дёшево решил
Asten
Но на будущее хочу на hashicorp всё-таки посмотреть
Asten
Кстати норм тема для статьи на хабру...
Asten
Сравнение vault
bebebe
Сравнение vault
Я не до конца понимаю вашу боль по поводу мержей, видимо нужно смотреть на конкретные примеры
Asten
ээ, а откатиться можно же всегда
Да, но не в процессе выкатки релиза узнаешь что vars отсутствует, и вот это все...
maniac
а. я думал совсем теряли, и мне даже интересно стало как в гите можно всё потерять
bebebe
Да, но не в процессе выкатки релиза узнаешь что vars отсутствует, и вот это все...
Такие проблемы должен отлавливать CI и CD на стейджинг при правильно построенном процессе
cent
Тоесть сейчас это /inventory/имя_окружения/group_vars/all/secrets.yml
Ну, лично я писал Makefile, который генерил секрет из .env и из файликов в ~/.secrets_folder. Ну, или можно local плейбук накатать, который соберет секрет и потом еще дернет шифрование. А сам процесс добавление чего-то в секрет - это собственно добавление в шаблон секрета. Если используется общий сквозной секрет - то это уже извращеный подход. Но даже проблема с общим сквозным секретом решается генерацией. Ровно так же как lock файлы в пакетных манагерах. Кому как удобнее... Не понимаю в чем боль с мержем? Если один кто-то имеет право мержить, то все пилят просто в свои ветки свои секреты, а он уже потом смержит. Еще как альтернативу генерации могу предложить делать секреты как миграции (т.е. складировать тучу разных версий по таймстемпу). Ну и в плейбуке явно все это инклудить по glob или что-то вроде того, но это тоже какой-то изврат
Asten
Ну, лично я писал Makefile, который генерил секрет из .env и из файликов в ~/.secrets_folder. Ну, или можно local плейбук накатать, который соберет секрет и потом еще дернет шифрование. А сам процесс добавление чего-то в секрет - это собственно добавление в шаблон секрета. Если используется общий сквозной секрет - то это уже извращеный подход. Но даже проблема с общим сквозным секретом решается генерацией. Ровно так же как lock файлы в пакетных манагерах. Кому как удобнее... Не понимаю в чем боль с мержем? Если один кто-то имеет право мержить, то все пилят просто в свои ветки свои секреты, а он уже потом смержит. Еще как альтернативу генерации могу предложить делать секреты как миграции (т.е. складировать тучу разных версий по таймстемпу). Ну и в плейбуке явно все это инклудить по glob или что-то вроде того, но это тоже какой-то изврат
Я написал выше как решил эти проблемы. Что значит просто пилят в свои ветки? Как потом мержить зашифрованные файлы?
Asten
Эм как?) У нас 2 ветки и мастер. Тоесть мы применили из 1 ветки последний, потом из 2 последний и потеряли из 1 ветки
Sergey
Я написал выше как решил эти проблемы. Что значит просто пилят в свои ветки? Как потом мержить зашифрованные файлы?
что значит "мержить зашифрованные"? н акой чёрт их мержить? они обновляются в штатном режиме, когда приходит время ротации кредов, но уж точно не руками разрабов.
cent
Я написал выше как решил эти проблемы. Что значит просто пилят в свои ветки? Как потом мержить зашифрованные файлы?
На сколько я понял, ansible-vaut не предполагался никогда для передачи кредов кому-то. Это утилита для того, чтобы каждый оператор не вводил каждый раз свои креды, которые он получил по други защищенным каналам.
cent
Эм как?) У нас 2 ветки и мастер. Тоесть мы применили из 1 ветки последний, потом из 2 последний и потеряли из 1 ветки
Ну, смотри. Проблема не нова. Разрабы с этим уже как-то живут лет 10. С composer.lock, package-lock.json, Gopkg.lock и прочими. Почему не заюзать этот опыт с автоматически генерированными файлами в сферу криптованных файлов?
Sergey
Что значит обновляются в штатном режиме? Не руками разрабов а чьими?
разрабы в идеале секреты даже в глаза видеть не должны. есть такая роль - администратор безопасности.
Sergey
И как это отвечает на вопрос каким образов креды попадут в мастер?
администратор безопасности сделает коммит - и попадут.
Asten
У каждого разраба креды свои или общие?
У каждого сервиса разные, но есть и совместные
Asten
администратор безопасности сделает коммит - и попадут.
А ну пойду открывать вакансию, спасибо)
Sergey
А ну пойду открывать вакансию, спасибо)
толсто. перечитай ещё раз - РОЛЬ, а не человек.
Sergey
а кто будет выполнять действия за эту роль - это уж как в бизнес-процессах конкретной организации заведено.
Asten
толсто. перечитай ещё раз - РОЛЬ, а не человек.
Может пример кода есть? Я быстрее пойму
cent
У каждого сервиса разные, но есть и совместные
Ну, каждый кидает креды в свой файлик secrets/ —all.yml —vasya.yml —petya.yml Каждый пропишет себе в .env DEPLOY_ENV=vasya И дергать плейбук с нужным env env $(cat .env|xargs) ansible-playbook ... И уже в самом плейбуке подключать по переменной lookup('env', 'DEPLOY_ENV') Так можно разграничить частные секреты. А общими пусть Ваш мерж-суперадмин управялет.
Sergey
Может пример кода есть? Я быстрее пойму
есть. но как-то тупо креды, хоть и волтом закрыте, в чат сливать, не? —- serv1: [ 'login': 'login', 'password': 'pass'] и в файле такого вида перечисляешь все креды окружения, потом его волтишь. далее в роли ссылаешься на результат уже этого файла: {{ serv1['login'] }} ..... {{ serv1[''password'] }} Вторую подстановку разработчик может хоть себе на лоб написать - ничего не изменится. Она сработает только при запуске плейбука с корректно раскрытым волтом.
cent
Зачем это прописывать если окружения разделены на уровне inventory/env/...
А при чем тут окружения к частным секретам?... На одном окружении может быть туча операторов
Sergey
Зачем это прописывать если окружения разделены на уровне inventory/env/...
и не надо. вот тот файлик где все креды лежат кидаешь в inventory/<name>/group_vars/all.
Asten
Парни стоп
Asten
У меня уже это все сделано
Asten
И лежат там креды
Asten
И env прописывать не надо
Asten
и не надо. вот тот файлик где все креды лежат кидаешь в inventory/<name>/group_vars/all.
Ты предлагаешь сделать много файликов для каждого сервиса и по отдельности шифровать?
cent
Частные секреты это для конкретного сервиса?
Блин, ну Ты жжешь)) Честно. Смотри. Общие секреты - клепает чувак, который у Вас там мержами заведует. Как он это делает - вообще его трудности. В идеале, они должны по крону опрашивать hashicorp vault или другую какую-то хрень и перегенериваться. Ну или по колбеку. И не нужно садить на это человека. (ротация кредов - то, о чем Тебе сказали выше) Частные секреты - если у каждого свой пароль от ажура, авс и прочих облаков и нужно чтобы тела ходили только под своими кредами. И самый простой способ - это напилить переменную окружения по которой подключать нужный секрет определенного чувака. И конечно же, каждый должен дергать плейбуки под своей переменной
Asten
нет. всё с окружения лежит в одном файле.
2 разраба добавляют в разных ветках свои креды. Как мержить?
Asten
И проблема это моя с мержем, я их и мержу потом...
cent
Вот и вернулись к hashicorp и к единственному неразрешенному вопросу с общими секретами)
Ну, можете и excel парсить с кредами)) Тут уже у каждого свой полет фантазии. Но, кстати, если будут общие секреты и частные, то нужно будет общие еще в частные засовывать, потому что вроде нельзя дернуть плейбук с несколькими файлами паролей от ansible-vault.
Sergey
2 разраба добавляют в разных ветках свои креды. Как мержить?
разрабы НЕ добавляют креды. процесс сломан. мерджить не надо.
Asten
разрабы НЕ добавляют креды. процесс сломан. мерджить не надо.
Они должны мне прислать их голубями и я добавлю?