Ставим Kuberpenis, прокладываем CI/CD Canalización, получаем удовольствие от своей работы (но не в финтехе)
В тред приглашаются все причастные и интересующиеся
Прошлый тред >>2936757 (OP)
RUN npm install prisma
и получаю прибавку к весу докер образа 170мб?
На сайте npm написано призма распакованная весит 10мб.
Интересно, спасибо.
>RUN npm install prisma
тред называется Devops, а не "Отель у брошенного брошенного девопсами программиста"
Девопс-тред, это когда девопсы сами обсуждают проблемы реализации того, за что им заплатили. Если у тебя нет девопса - найми.
Потому что у тебя в контейнере еще и ос
Чистки кэн ноды и линуха, ставь ноду которая с альпиновским дистром
Брысь отсюда, неудачник. Этот тред только для белой кости айти индустрии.
Пока никак, я вкатун сисдамин, юзавший линукс 10 лет на десктопе и на серваках для селфхоста
Сколько по времени сисадминишь? На работе только линух или всякие докеры нджинксы тоже есть?
На работе хуйня, даже вспоминать не хочу с какими блядьми мне проходиться работать и проходить humiliation ritual
RUN --mount=type=cache,target=/root/.npm \
npm install --omit=dev
Вот это ---mount=type=cache
это же троллинг да?
Меняем 1 символ в package.json и там следующий шаг инвалидируется. Маунт должен что-то кешировать, но по ощущениям он всё заново качает, когда ВООБЩЕ ничего не поменялось, я меняю например версию апп только.
Я короч написал скрипт который генерирует 2 раза package.json для докера.
1 раз мы генерируем старые зависимости. И запускаем npm install И этот файл обычно не меняется.
Потом мы добавляем новые пакеты, и еще раз делаем npm install и это происходит уже на новом слое докера. И там ставятся только новые зависимости.
В итоге всё старое закешировано и всё быстро билдится. И оригинальный package.json мы можем как угодно портачить он не обсирает нам установку зависимостей.
Такой же тред уже существует. ОП-хуй, ты на кой хуй это делаешь? Зачем ты копируешь треды из треда в тред? Ты же долбоёб?
Кому интересно, погуглите по паре постов тута по сайту 2ch.hk, сразу найдёте. Я такой же видел 2020 г., наверняка есть и раньше.
Кук-у
Это кубернетисы.
Я вот думаю, может хук сделать в гите. Но билдим мы всё равно на машине программиста и это никак не привязано к гиту получается. Так что хук это тупо. Остается только руками скрипт запускать.
А то у меня есть эта книжка на бумаге, думаю, полезно ли будет прочесть.
Сорян, тредом ошибся.
Дергаю скрипт по ssh через gitlab-ci, в скрипте сорт оф канари релиз:
1) тагается рабочий образ как :backup
2) делается pull / up
3) ждётся 3 минуты, дёргается хэлсчек
4) если хэлсчек не хэлсчек, то перетагивается образ из бэкапа и делается up
Евангелисты говорят, правда, это не тру силки смузитек, что правильно шарить docker-remote-acess и всю логику по перезапуску держать локально у себя, но я живу по принципу работает - не трогай.
>>216599
>билдим мы всё равно на машине программиста и это никак не привязано к гиту получается
А что за registry? Как пушите? Я думаю надо привязываться к нему, как основному хранилищу состояния.
То есть смена версии на докерхабе - повод дёрнуть ручку?
А на проде прямо сырой докер или композ?
Просто засунь в планировщик раз в 15 минут: docker compose -f /path/to/docker-compose.yaml up --pull, он автоматом рестаратёнт апу, если в реестре образ обновится.
Или docker compose pull appname и потом up, если не хочется чтобы для других сервисов без запиненых версий обновы тягались.
А я могу вообще получается свой докерхаб поднять как-то?
>раз в 15 минут
А может там хуки какие-то есть тоже?
Это же хуйня, не? У меня на нынешней батрачке есть дежурства, но они посменные хотя бы.
А так на выхах комп обнимать какая-то ебанутая идея выходит
Терпи.
Я короч поднял приватный докер регистри. И там хуки есть можно, когда пуш происходит перезапускать контейнер. Для этого надо написать сервис...
Написал скрипт который слушает и рестартует докер после пуша.
Этого достаточно чтобы устраиваться девопсом куда-то или нет?
Хуй знает, Я ответственнен за инфру своего отдела (но не за кубы в которые мы деплоим часть софта), бывает раз в месяц из дежурки звонят. Когда только пришёл было сильно хуже т.к. инфра работала через очко (одни деплои руками по рдп в иис под виндой чего стоят)
Практика говна, собирать рабочие образы на личных тачках это пиздец. Один раз настроить билдер, раскурить как работает подман/канико и жить как белые люди
>собирать рабочие образы на личных тачках это пиздец
Ты скозал? Суть докера в том что нет разницы личная это тачка или нет.
У меня вот комп мощнее чем сервер. Гит хук я умею настраивать чтобы билдить после мерджа в мастер, просто это хуйня.
Можно сразу же проверить у себя на машине что всё работает.
Если твоя задача задрать в небеса бас фактор всей команды, то вопросов не имею.
Для тестов же есть стейдж контур, но судя по твоим тейкам ты пилишь в соло какой то говнопроект в котором даже стадии тестирования нет
>задрать в небеса бас фактор всей команды
Потому что я единственный человек в мире который может прочитать докерфайл?
Куда жмать чтоб в PHP это сделать? Чтобы туда сюда, тырым-пырым и в продакшон, чтобы Обба и обана-на. Ну ты понял.
Голанг это доп. язык, а не основной. Люди его учат имея базу эту.
Я вот так же сделал. Проблема в том что когда мы пулим новый образ. То тома остаются старые. Насколько я понял после тестов. Если мы удаляем тома, а потом композом запускаем, то встает как надо. Так и надо постоянно тома эти удалять?
Шарить файлы между контейнерами через вольюмы как то костыльно, в будущем это очевидные проблемы даст.
Даже сейчас тебе придётся с каждыйм деплоем кастовать либо docker compose rm либо вообще docker compose down -v
А как какать? Мне надо чтобы нжинкс раздавал статику и проксировал остальное. Нжинкс берет эти файлы из другого контейнера через том.
Сделай 2 nginx:
- Отдающий статику.
- Реверс прокси.
Что как маленький то.
Умение декомпозировать - это первое чему надо учиться в ИТ.
А отдающий статику нжинкс откуда будет брать файлы?
Ты присрал костыли и по другому не делал. Мнение твоё стоит примерно ничего.
Посмотрим как ты потом свои костыли в кубы будешь доставлять и поддерживать версионирование
По другому это сбилдить апп, потом из билда вытащить в хост файлы, потом сбилдить нжинкс.
Вместо просто сбилдить апп.
Не нужны мне копрокубы.
лол. Нужен всего лишь один докерфайл с 2 стейджами и 2 команды - билд и пуш.
Расскажи нам лучше как сейчас твой деплой работает
Как мне в одном докерфайле 2 образа сбилдить?
>Расскажи нам лучше как сейчас твой деплой работает
sh скрипт который пулит апп образ, останавливает композ, удаляет тома и запускает композ.
Извини, но нахуй два образа? Нужен один образ в который будет сложен результат первого стейджа. Я хуй знает как ещё понятнее писать, может так "Нужен всего лишь ОДИН докерфайл с 2 СТЕЙДЖАМИ и 2 команды - билд и пуш"
Ладно, забей хуй. Я понял что ты любитель писать говно в котором только ты сможешь разобраться, вместо использования того что юзают все и везде
У меня некст.жс приложение и нжинкс. Надо 2 контейнера. Значит надо 2 образа. Сейчас мне нужен 1 образ потому что нжинкс я беру голый. Конфиг нжинкса это том, ssl ключи это тома и файлы которые надо раздать это 2 тома.
Последний раз кормлю и пусть остальные тебя развлекают
https://github.com/nginx-proxy/nginx-proxy
https://kubernetes.io/docs/concepts/services-networking/ingress/
Не, это ты какой-то дурачок. В докер туториале с первого дня говорят бери голый постгрес и делай том для бд. В нжинкс доке написано бери голый нжинкс и делай том с конфигом.
Нет ему надо билдить свой нжинкс. Как? А хуй его знает.
У меня нет кубов.
Сделай нам костыльный велосипед который развалится при первом чихе, использовать любые технологии уже ставшие индустриальным стандартом строго ЗАПРЕЩАЕТСЯ
©не выдуманный кабан о котором невозможно молчать
Кто угодно может называться кем угодно. Это открытый рынок. Ты можешь назвать себя хоть сениор единорогом. Хоть черепахой. Хоть Уорреном Баффетом. Никто не пойдёт и не будет проверять, действительно ли ты единорог или Баффет. Ты даёшь кликухи сам себе. Если тебя это успокоит, я могу назвать тебя величайшим девопсом во вселенной. Дело лишь в клиентах. Кто готов купить твои услуги. И в твоих финансовых возможностях. Просто какая-то кликуха не делает тебя Игорем Сечиным и вряд ли ты когда-либо подаришь яхту "принцесса Ольга" своей бабе.
Кто сказал что мне нужно скалабили оркестретинг и другие базворды?
Что это дает бизнесу?
То что когда ты уволишься все твои потуги будут выброшены в мусор. А новому сотруднику придется разворачивать стандартную систему в нуля, потому что в недокументируемой кривой говнине какого-то васяна разобраться будет невозможно, ведь в ней шаг влево-вправо - не работает ничего.
И вот для бизнеса пришлось оплатить твои изобретения велосипедов, а в итоге оказаться в той же точке.
Ты думаешь люди используют кубернетисы исключительно потому что не смогли в костылестроение? А не потому что кубернетисы - это современный стандартный декларативный язык инфраструктуры?
Кубернетес тем временем все ещё выполняет 0 нужных функций.
Инбифо: пукнуть базвордами в ответ на это пост. У меня за 10 лет в айтишке максимальная стойкость к базвордам и меня нельзя ими впечатлить.
Ты зачем-то пытаешься убедить зелень что костыли плохо, а стандарты хорошо
Хотя какие нахуй 10. Все 15 можно считать. Щас мне 35 почти выпустился я в 20 лет. Работать я начал еще в институте.
Щас бы мне слушать пердикса который хочет вертолет в проект тащить чтобы было ИНДУСТРИАЛЬНО. Это не аргумент блядь долбоебы.
512x432, 0:49
Я теперь знаю чем девопсов валить на собесах. Они не могут ответить всем тредом нахуй нужен кубернетес.
Справедливо.
>Кубернетес тем временем все ещё выполняет 0 нужных функций.
- Однотипный деплой и ундеплой (удаление) практически чего угодно.
- Ролинг абдейт который не надо изобретать.
- Оркистрация, а значит не нужно прикреплять сервисы к нодам и ходить потом в них прописывать ойпишнечки друг друга. (consul + templater или etcd + conf.d - каинды того же самого - прописывания).
- Нетворкинг полиси поверх незакрепленных за нодами подов.
- Сервайс мешь - безопасность, трейсинг, разные фитчи с управление трафиком.
- Паттерн k8s оператор давший ранее невероятные вещи, вроде zalando.
- Гарантии для бизнеса в работоспособности и актуальности технологии в будущем.
>>224175
Старше тебя, пиздюка, на 3 года.
Чекай, тебе харкнут "понаписал баззвордов, по делу ничего" или "зачем мне всё это если я могу насрать башем" мы же тут не в девопс тред а в цирке нахуй
> Чекай, тебе харкнут "понаписал баззвордов, по делу ничего" или "зачем мне всё это если я могу насрать башем"
В чем ты не прав?
Твой пост сложнее всех моих баш скриптов бтв.
Почему так мало вакансий? Посмотрел что есть в Москве, по итогу вижу пару вакансий без опыта, остальные с опытом сисадмина, плюс знание языков программирования.
Спасибо.
Прикинь одного девопса на сколько программистов хватит?
Куча программистов к тому же вполне себе нормально могут написать полный пайплайн сборки+деплоя и им нужна только рабочая инфра, гайды ака линия партии и порой консультация.
Я не девопс по должности, рядом только стоял. На работе есть 2 кластера шифта, в продовом 10+к подов, обслуживает кластеры, реджистри, кэши, прокси, гитлаб парочка команд
>Почему так мало вакансий? Посмотрел что есть в Москве, по итогу вижу пару вакансий без опыта, остальные с опытом сисадмина, плюс знание языков программирования.
Потому что девопс с нуля хуже, чем разработчик взявшийся девопсить.
>Почему так мало вакансий?
>Посмотрел что есть в Москве, по итогу вижу пару вакансий без опыта, остальные с опытом сисадмина, плюс знание языков программирования.
1. Как понять "МАЛО". На хедхантере 5 тысяч вакансий. Это дохуя.
2. Без опыта люди не нужны. Подумай сам. Если вакансий 5 тысяч штук, а претендентов 10 тысяч. Вопрос: куда пойдут остальные 5 тысяч человек? Ответ: нахуй.
3. В данный момент спрос на девопсеров полностью удовлетворён. Нет никакого дефицита на рынке.
4. Если нет дефицита на рынке, какой смысл обучать?
5. Девопсер - это ответственная должность. Начинающий рукожоп может принести компании огромные убытки, так как простой сервиса очень дорого обходится. Поэтому все нанимают ОПЫТНЫХ.
Ты зачем сейчас меня так расстраиваешь?
Анончики, раскидайте зелёному непонимающему
Сейчас гребу обычным сисадмином-эникеем в галере, по мере сил и умений ковыряю наш онпрем на кластере proxmox, немного пишу кривенькие пипелине и докерфайлы, пушу базовые образы в харбор. Про ансибл и терраформ вообще нихуя не знаю
Расскажите бездарю, что и сколько надо вкусить и распробовать, что бы съебать на джуна девопса в кратчайшие сроки потому что я пиздец заебался параллельно с дрочкой ямликов еще и картриджи менять и технику закупать. Не шучу.
Заранее спасибо, люблю вас <3
У тебя уже всё есть на джуна,
Сам вкатывался на джуна девопера со стеком линук ансибл докер
Проще всего будет по тестовому, бери спамом откликом и сделай четкое резюме, где не будет "менял картрижды, сопроводжал ЦЕЛЫЙ офис"
Есть два default gw и один NetworkManager, который раздает им метрику по порядку подключения, а мне надо, чтоб метрика была статичной, чтоб у eth0 был приоритет всегда выше, чем у usb0, при любых переключениях.
Как это лучше сделать или чем заменить NetworkManager? Systemd нету, mx-linux.
Docker Hub и прочие сервисы для хранения образов не хочу использовать, как и поднимать свой. Пока мне пришло в голову 2 варианта, как это все деплоить:
1. Самый простой - на сервер подтягивать код с гита, там же билдить и перезапускать контейнер.
2. Билдить локально, копируя код проекта в образ, через docker save сохранять образ, rsync'ом доставлять его на сервер и через docker load загружать.
Какой вариант более правильный? И как сделать правильно, если оба говно?
Если это разные коннекшены, то ты можешь передать им приоритеты в опции connection.autoconnect-priority
А так пока непонятен твой сетап.
https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/nm-settings-nmcli.html
Я бы тут или посмотрел ipv4/ipv6.routing-rules, или выключил бы вообще дефолты (never-default) и настроил их бы опцией gateway, или прибыл бы коннекшен к конкретному интерфейсу - connection.interface-name.
Насколько про них сейчас на собесах спрашивают?
Спасибо большое. C nmcli получилось.
У рэббита очень хорошая и понятная дока. Про кафку не знаю
Почитал доку по диагонали и не понял каким образом в этой схеме работает сеть? Как мне забубенить отказоустойчивый сайт? Что происходит когда один из nomad-ов отключается?
Сможешь, наверное, но зачем? По нему же три с половиной вакансии, а кубер уже давно стандарт отрасли
Речь о "вкате" не идет.
Я хочу себе.
Да даже если вкат, почему бы не уметь иногда запустить Nomad?
Как я понимаю, он сильно проще кубера, а главные возможности те же
Ну ты ж в любом случае, будешь инвестировать свое время и внимание на изучении технологии. Лучше выбрать более перспективную.
Кубер сейчас как линукс - если сильно в кишки не лезть и не решать сложные задачи, то довольно простой и много готовых солюшенов.
Даже если в этот тред придешь и кто-то тут будет, то по куберу подскажет, а по номаду уже вряд ли.
Так что думай.
Очевидно k3s, он на дешманской впске нормально живет, а при необходимости можно перехать на кубер. Микросервисный пет без логично делать на k3s и tilt
мимо
>tilt
Надо будет посмотреть. У нас сейчас локальная разработка на k3d и makefile, меня они оба заебали. Makefile в какую-то сраную портянку превратился, особенно проблема джобы с автотестами запускать.
Надо только нормально слои в докерфайлах написать, чтобы при изменении кода лишних действий не было. Установка зависимостей один слой независящий от кода, компиляция другой слой.
Наверно можно совместить, но зачем? Это для локалной разработки, чтобы сразу в кубере разрабатывать и видеть результат. Зачем локально CI/CD? От написания кода до желания его закомитить большая дистанция.
Werf это не альтернатива ci/cd инструменту, это надстройка над helm и kubectl, которая упрощает некоторые вещи.
Werf как ватчер файлов работает или реагирует на изменения ветки в гите?
Не можно. Это разная инфраструктура. + Ты же в кубер пихаешь не только свой код, но и готовые облачные кирпичи типа keycloak
Знаешь его? помоги найти контакт и выстроить сеть
Какой еще Кирилл? Владимир Горячий его зовут
Я могу какой-то хук запилить, чтобы нужные мне volumeMounts + volumes патчились автоматически в деплоймент с указанным именем? Меня хватило только на скрипт в пайплайне, который kubectl patch вызывает после деплоя, но это плохое решение, т.к. этот NAS нужен поду уже на этапе инициализации и без него деплой падает.
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
Не понял твою проблему, измени манифест
Что такое манифест? По твоей ссылке это слово упоминается 0 раз. Если что, я в этой хуйне третий день ковыряюсь только.
Сейчас я нахожу deployment с конкретным именем и вызываю kubectl patch deploy app-name -n app-namespace --patch-file nas.yaml который добавляет нужные мне вещи в volumeMounts и volumes. Но этот deployment время от времени перезаписывается чем-то другим и мой патч слетает.
Как мне автоматизировать применение этого патча в конкретный deployment?
https://spacelift.io/blog/kubernetes-manifest-file
У тебя должен быть манифест который из джобы раскатывается вот его и правь
>>253624
>Что такое манифест?
yaml с описанием создаваемых ресурсов
>Я могу какой-то хук запилить, чтобы нужные мне volumeMounts + volumes патчились автоматически в деплоймент с указанным именем?
Да, это называется Mutating webhook. Удачи в освоении, не самая простая вещь. Проще до коллеги или соседнего отдела достучаться, чтобы у тебя деплой по-человечески шел.
Еще можешь попытаться патчить не под, а родительские ресурсы. Например, Statefulset или даже какой-то кастомный ресурс, если он есть и стоит еще выше. Вряд ли поможет, но попробовать стоит.
>У тебя должен быть манифест который из джобы раскатывается вот его и правь
Ему, походу какой-то PAAS выдали, где сервисы кнопкой деплоятся и доступа к шаблонам манифестов у него нет.
И тут оказывается, что этим PAAS был гостех и реализация фичи кастомных вольюмов запланировано на третий квартал 2056-года
Норм курс? 62 часа вроде идёт. TECHWORLD WITH NANA. Какой-то курс просто скачал на nnm, думаю "вау, на ангельском, всё собрано, да ещё баба!!!", ну и скачал. Пока только пару уроков глянул, говорит хорошо, всё понятно, объясняет наглядно с помощью презентации. Список тем на последнем скрине.
Да, тем болие я собираюсь сначала на год устроиться в l2/l3/сопровождение, параллельно работе дальше прокачиваться в девопс, ну и потом выйду в отпуск, в отпуске додрочу, после отпуска ливну и пойду уже в девопс на мидла сразу.
Какая-то баба за 5 минут проговаривает концепции, на понимание которых нужно потратить годы и ты собираешься делать вид, что их понял?
Звучит как план!
Ну и что?
Человек и книжки впитывает далеко ни на 100%. Это же не значит что их не нужно вообще читать.
И тут, возможность уловить какие-то пусть даже базовые концепты - много стоит. Самому до них доходить действительно годы.
И в любом случае когда человек интересуется любым материалом о предмете - это гораздо лучше чем нихуа не делать.
>>255024
Все правильно делаешь.
Кстати норм тянка, я бы выеб.
Кое как осилил docker и cocker-compose синтаксис, как теперь мне сюут yaml файлы для настройки деплоя CI/CD пока девопсы курят в сторонке, просто матов не хватает насколько это уебищный инструмент.
хелм чарты очень удобно
Ты в жизни джинджу и подобные шаблонизаторы что ли не трогал?
Потому-то дево псы - ямл "программисты". Поэтому им наделаи 100500 частично дублирующих инструментов с ямлом. Туда же ансибл. А ведь умные дяди говорили не писать DSL на джейсоне (ямл надсинтаксис джейсона) - будет жопа. Почему не могли суки на питухоне писать, надо было взять мерзкую парашу и еще в добавок ее в шаблонизатор превратить...
ПС. Понятно что всех захватила идея декларативного управления состоянием и гитопса. Но это вообще протекающая хуй знает как абстракция. Ну не может сервер с кучей говна быть состоянием описанным жейсониной.
Да. Писать процедурный код на питоне. В котором можно начать с высокоуровневых абстракций и углубится в ниpкоуровневые, когда потребуется понять, как оно работает под капотом. Код по которому можно путешествовать в нормальной IDE. Код который можно отлаживать.
Ну прям годы, пол жизни бы ещё сказал. Если чел смышленный, слушает внимательно, повторяет, практикуется, этого курса хватит более чем, чтобы быть Джуном/слабым миддлом
Осталось собрать mvp, получить финансирование и убийца кубов готов. В хашикорп не забудь написать
>Почему не могли суки на питухоне писать
Тогда уж "лучше" писать на перле. Там одно и тоже можно сделать 20 разными способами... Вот ведь действительно будет охуенно разбираться с этой говнине с реализацией.
Декларативные инструменты потому и выстрелили, что в них нет большого количества возможностей. И действовать можно подчастую линейно. Стало быть результат получается предсказуемый и сопровождаемый.
еботу на питоне, кстати, изобрели, не буду произносить её названи в суе
>надо было взять мерзкую парашу и еще в добавок ее в шаблонизатор превратить...
Ну это мог написать только тот кто вообще не разобрался с инструментами.
- В ямле нет шаблонизации, анкоры не в счет, на них далеко не уедешь.
- То что в ansible используется jinja - это не имеет никакого отношения к ямлу. Потому что ансибл интерпретирует строки как jinja, а не yml как jinja. Т.е. шаблонизации подвергаются строки внутри ямла, а не сам ямл.
- В кубер манифестах есть yml, но нет никакой шаблонизации.
- В helm например вообще не про yml (и темболее не про dsl), все что там про yml, это манифесты ниже лежащего (кубового) уровня. А шаблонизация go-template сделана также поверх строк, когда еще никакого (ниже лежащего) ямла нет.
Для людей в теме: все разделено на четкие изолированные уровни абстракций. Но тебе дурачку это видимо сложно. Для тебя это каша. такая же как у тебя в башке Потому что ты не способен в абстракции, неспособен выделять в иерархии представления сущностей важные в конкретном контексте детали.
ВОН ИЗ ПРОФЕССИИ ПИТУШОК
Четкость абстракций это к шизикам. Нормальным пацанам важнее возможность в дебагере брекпоинт поставить
>Четкость абстракций это к шизикам.
Шизиком то ты в данном случае выступаешь, лалка.
Читать научись: четкие не абстракции, а четкие уровни.
Четкие уровни абстракции - это про возможность выделять значимые границы в разнородном (имеющем разное представление, не конкретном и поэтому абстрактном) контенте в зависимости от необходимого (уровня) применения, и следующая из этого возможность оперировать с контентом на нужном уровне соотвествующим уровню способом, не вылезая куда не просят.
Например подходящий пример но как правило всегда плохая реализация, я считаю так делать не нужно: это с помощью ansible написать шаблонизированный bash script в ansible.builtin.template: содержащий одновременно и баш код со своими переменными + локальный template код на jinja (с фильтрами, селектами и прочими мапами) + подстановка переменных взявшихся их host_vars и прочих фактов. Для того чтобы управляться с этим крайне желательно четко понимать где какой уровень абстракций. Еще раз: я против такого подхода, это просто пример.
В анусе себе брекпоинт поставь.
И как это все дело отлаживать? М-м-м? А если на тестовом окружении не воспроизводится то что на проде? Искать глазами в 100500 ямлах, выстаивать четкие уровни абстракций и гадать почему у тебя на проде под постоянно рестартует или не находит сервис какой-нибудь хотя на тесте все заебись? А оказывается это побочный эффект от того в какой последовательности хелм груду манифестов выпольняет... А хуй его знает. Это же черный яшик, а ямлы описывают только конечное состояние. А оно не наступает. Писать в спортлото?
Логи и обсервабилити кубов отличные если админ не ленивый дебил
>возможность в дебагере брекпоинт поставить
Google: debuggin helm templates :
https://helm.sh/docs/chart_template_guide/debugging/
helm template --debug will test rendering chart templates locally.
В чем проблема - непонятно.
И что ты там отлаживаешь? Проблема в самой декларативности манифестов кубера. Это как SQL. Ты описываешь что хочешь получить, но не можешь прямо на план запроса повлиять. Тольков в кубере все сложнее. Но скармиливаешь ему хотелку о конечном состоянии, без описания как это сделать и без возможности отладить алгоритм как это состояние будет достигаться. Но при проблемах ты вынужден думать как черный ящик устроен и как он твои 100500 хотелок выполняет.
Он конечно хуйню несёт но и ты не дальше ушёл, ты привел команду на чек рендера чарта, никаких гарантий что это всё поднимется в кластере это не даёт, просто проверка синтаксиса
Я знаю. Братишь, это типа добрый троллинг.
Он пришел с тупой формулировкой "Как вы вообще пользуйтесь этой программой Helm?"
А Helm не виноват. Манифесты взаимосвязаны. Порядок применения (изначально неправильных чартов) может повлиять на работоспособность куба. Чтобы это распутать может помочь просмотр результатов рендера манифестов в уме или с ключем.
Виновата его косолобость.
Есть интересное видео где какой-то ит-деятель обосновывает, что современное программирование настолько сложное, что вам ВСЕГДА нужен интерактивный дебаггер.
Вот мы наблюдаем пример подобной привычки.
К сожалению, я его потерял в боях за Замедление Ютуба
Ну так нужно признать, что когда ничего кроме логов нет то это хуевая ситуация. Зачем разработку софта намерено превращать в астрономию. У астрономов предмет изучения за тысячи парсеков от них. А у тебя должен быть полный доступ к объекту. Особенно если это self hosted.
Куберы изобретали для облаков. Оно и понятно, никто не даст тебе грязными рученками лезть в инфраструктуру чужего дяди. Но девопсы же сами же натягивают куберы на свои сервера и лупятся глазками в логи. Вместо того чтобы разбираться как оно работает.
Это не сисадмины, додик ты необразованный.
Ну так-то да. Я хз что новички тут забыли. Это тред для разрабов либо сисадминов с опытом хотя бы 2+ года. Иначе тупо бессмысленно изучать эту тему.
а) Какой мудак придумал, что обычные имена парамов надо капслочить и снейккейсить без надлежащей документации?
б) От версии к версии все переворачивается вверх дном, все туториалы, ответы на StackOverflow, доки и примеры идут по пизде
б) Оказывается версия хельма узнается командой helm version. О БОДЖЕ МОЙ. Вас девпсов не учили, что все уважаемые команды выводят версию/справку по минус V или --v в крайнем случае. Почему хельм возомнил себя таким особенным?
> Вас девпсов не учили
Ты не в ту сторону воюешь.
То, что Хелм это кал, тебе любой девопс-инженер подтвердит.
Как есть еще куча инструментов, которые стали стандартом, а по факту - то еще дерьмище. Например, все поделия от Графанодебилов, кроме прометеуса. Или набирающий сейчас популярность vector
Эту всю поебень разрабатывают такие же анальники, как ты, а девопсам и сисадминам потом приходится с этим всем работать. Издержки профессии.
Так что сам лучше пиши хороший код, чтоб потом другим не пришлось с ним мучаться. И документацию тоже хорошую пиши, чтоб потом в твой адрес не летели проклятия, как в адрес Хелмомразей - несколько лет назад у них вообще вместо документаци был высер шизофреника.
>пиши хороший код
мне на роду написано ничего важнее мапперов dto-шек в entity не писать и наоборот. Мой потолок это мапперы entity в elasticsearch через кафку. Короче одно и тоже 5 раз по-разному с мапперами друг в друга
Это я опять возвращаюсь дабы частично извиниться перед всем девпсовым сообществом за то что зря быканул
>Какой мудак придумал, что обычные имена парамов надо капслочить и снейккейсить без надлежащей документ
Сука, это наши придумали черти,
>If you use environment variables rather than system properties, most operating systems disallow period-separated key names, but you can use underscores instead (for example, SPRING_CONFIG_NAME instead of spring.config.name). See Binding From Environment Variables for details.
только щас узнаю о такой функции. Получается helm тут не причем, а я два дня искал как он мапит одно в другое
>а) Какой мудак придумал, что обычные имена парамов надо капслочить и снейккейсить без надлежащей документации?
Так исторически сложилось.
Нужно отличать о остальных.
Кроме того, есть некая неосознанная попытка копировать капсовые макросы, которые #define в Си
> б) От версии к версии все переворачивается вверх дном, все туториалы, ответы на StackOverflow, доки и примеры идут по пизде
> б) Оказывается версия хельма узнается командой
Лично нам - поебать. Три года работаешь, а дальше сваливаешь в поиске очередного ЕДИНОРОГОСТАРТАПА
github.com opentofu/registry/pull/817
В проект, который создан как свободный форк terraform , пробрался вредитель с парой унылых петов на чистых ссях и подгадил и так не очень успешному проекту путем блокировки российских клауд-провайдеров
Ось такой опенсорс, малята.
Запомните этот ебальничек https://github.com/ollevche
АХАХАХАХАХ
Аноны если у вас есть аккаунт в этой помойке, не могли бы вы написать: "Сдавайся хa-хo-ль, тут Ахмат сила! Хa-хo-ль... хa-хo-ль... Сдавайся!"
сраная макака со своими спамлистами
у нас в конторе полтора девопса/админа на ~10 проектов,
потихоньку перетаскиваем всё с systemd на docker.
В качестве оркестратора хотим взять swarm, потому что с кубером разбираться некому и некогда, а compose уже хорошо знаем.
Вроде как всё хорошо, но напрягает то, что swarm вроде как legacy и нимодно.
Что посоветуете, вникать в кубер или swarm норм?
ha не нужен.
Ты бы лучше имаджинировал свое ебало, когда зумер 16 лет отроду спокойно общается на чистом английском и вообще участвует во всяких хакатонах и т.д
Я уже третий проект пихаю в кубер. И могу сказать, что к куберу не только админы-девопсы должны быть готовы, но и команда разработки, и сам проект.
Какая-то хуйня, спроектированная под докер(композ) и под кубер - это две разные хуйни совершенно. Речь, конечно, про грамотное проектирование и последующии оптимизации.
Так что смотрите. Либо вы сейчас переходите на кубер, страдаете, матерясь кое-как упихиваете текущий проект туда. Но получаете экспертизу и задел на будущее, следующие проекты будут сразу разрабатываться с оглядкой на кубер. Либо потом будете делать все то же самое, но для нескольких проектов.
Ну либо, конечно, хуй забить и еще 15 лет сидеть на докере и systemd, а там глядишь, что-то новое появится.
Я мог бы стать одним из вас, но мне пока повезло.
Аноны, доброй ночи. Немного о себе. Колупаю линуксы, хостинги, сети с 2005. Паппеты, ансиблы, почтовики, немношко спама, впны и всякое такое. Фрилансер на бурж со стажем. Брал в проект все что содержало слово linux. Уже к 2020 начинало надоедать. И начал задумываться, куда двигать дальше. Очевидным выбором (почти) стал девопс. Начал читать мануалы и дергать сворм и куб на виртуалках. Ебать, какое же задротство. Скукота.. нет в девопсе духа свободы и какой-то нотки авантюризма. Перекидывание говна между клаудами - ну норм для работы в команде с 9 до 5 в какой-то фирме внедряторе кубов. Так это увидел. А это не то, к чему я привык (соло проекты) и что дает хоть какое то чувство независимости и удовлетворения от жизни.
Пока данный вопрос отпал (пилю свой проект, живу за лицензии и саппорт), но возможно, к этому вопросу придется вернуться. Так что вопрос к сисадминам линуксов широкого спектра, вкатившимся в девопс - вам как, не скучно?
Да что у вас в кубах крутится? Очередная ненужная екоммерс говнина типа убийцы Вайлдберриз или рассылка спама или считалка партнерских кликов? Не могу себе представить что серьезный бизнес запускает свой кор-функционал в кубах )) а все побочное можно отдать школотронам в кубы деплоить, упадет, да и хуй с ним.
Старайтесь набрасывать лучше
Лолд, у свинявых заблокирован AWS, сервисы гугла на грани полного блока, а они что-то мандят про опен сорс выполнящие санкции. В принципе - да, это удивительно, при учете что гитхаб заблочат подпынявые через пару лет, если не в этом году
Хуй знает, если ситуация вернётся просто к тому что было, то маловероятна миграция с опенсёрчка у которого нет мутных платных подписок
Почему сраный?
Full text search очень даже не бесплатный.
У elastic'а целая гора крутилок, которые приходится крутить.
loki поставил и заебись.
Ахахахахах.
У них нет ресурсов чтобы разбираться с санкциями, но есть ресурсы чтобы к ним пресоединиться... Хотя нет, простите, не так. Для того чтобы присоединиться к санкциями поумолчанию не надо разбираться, за тебя уже все подумали.
Ааззазааз, попенгсорс который мы заслужили.
Не они первые не они последние
Земля пухом братишкам долбоёбам
Всё возможно, когда лид проекта из 404.
Всё просто - эти костыли идут куда подальше, а нормальные варианты ты исключил
На проекте его собираются вводить, а я раньше с ним только как пользователь работал и то довольно при всратых обстоятельствах.
Нужны советы опытных девопсин. Мнения и опыт дата-инженегров тоже приветствуются
Сам ты мудила. Его задача - откат на прошлую версию. Если он в рецептах не будет прибивать всё к хэшам или хотя бы версиям, то в какой-то случайный момент никакого отката не случится, хоть ты усрись со своим гитом 10 раз.
Выбором бы мог стать ghcr.io, но он его отмёл.
Точнее все не так. В инит контейнере k8s-wait-for который следит за статусом джобы в которой уже миграция выполняется
Я чот не понимаю, объясни мне плез, зачем тебе ждать выполнения миграции? У тебя в любом случае во время развертывания будут параллельно работать поды твоего бекенда в предыдущей версии. А значит миграция не должна для них ничего ломать. Что в свою очередь значит что новый выкатываемый код должен работать в переходном варианте в совместимости с базой в предыдущей версии. (например если ты добавляешь какой-то столбец на основе информации из старого, то новый код должен заполнять в оба столбца, а старый еще работающий будет заполнять только старый про существование которого знает).
Помоему вот эта сама идея ожидания, если взглянуть на неё в общем, как на концепт - она весьма порочна. И выглядит как будто бы в систему работающую декларативно пытаются внести какой-то цикл с логикой (какие-то while if break else continue), т.е. делают императивщину из того что для этого и не предназначено.
Алсо: кекнул от капчи с кубирнетисом.
Не совсем корректно написал и много буков.
Коротко: нужно отделять выкладывание нового кода от миграций необходимых для него.
>>271071
Так миграции не должны ломать работу старого кода (могут, но надо делать так чтобы не могли), а новый код не может работать со старой схемой.
Поэтому обновленный pod вебсервиса не стартует пока не закомплитится куберджоба с миграцией.
https://medium.com/codex/database-migration-when-your-service-is-running-in-kubernetes-abbe9697421d
https://medium.com/@jonastm/database-migration-with-a-kubernetes-job-and-initcontainers-d196dec8ac96
я наблюдаю в тилте что все сериализуется нормально
Но может что умнее подскажете чем это...
Зачем?
Бля, мне аж хуёво стало. Трогал томкэт только вскользь и давно, но какие то дикие вайбы иис'а от него
Верни мой 2007й.
У меня в докер композе уже стоит настройка перезапускать при падении.
Почему эта хуйня упала и как какать?
Я такую херню ещё в 2005 году поднимал, для авторестарта httpd 1.3 блять , называлось daemon tools от доктора Бернштейна.
Так какой процесс был убит через оом? Мб он у тебя сам докер ебнул и нужно было ручками перезапускать демона
Ну основной ноджс процесс был убит первым. Сам докер вроде не был убит, потому что у меня скрипт перезапускающий контейнеры сработал без пердолинга значит докер демон был живой.
Вангую, нахуевертил с entrypoint.sh, у тебя умерла апа, но не умер корневой процесс контейнера.
Во первых, настроить HEALTHCHECK (внимательно читай инструкцию к нему, для автоматического перезапуска нездорового контейнера понадобится какой-нибудь костыль типа autoheal).
Во-вторых uptimerobot. Ты проактивно не закроешь все дыры. Нужна минимальная обратная связь о здоровье сервиса.
Деплой через модули написанные в инете. Там все есть
Я так и вкатился. Сперва пользовался инвалидками, типа убунты и минта, потом дистрохопил, потом на курсы по девопсу пошел, потом в сбер попал
>Алсо реквестирую какие-то адекватные видосы по екс, типа за что отвечают все эти впс, секьюрити группы и прочая анальная боль с пермишенами
Aws eks штоле? А чё там понимать, есть документация. Если кратко:
1. vpc - это изолированная подсеть, чтобы протащить эту подсеть в интернет, нужно подключать nat gateway, который стоит в районе $35/месяц.
2. секюрити группы - это просто набор разрешенных/запрещенных портов. ну типа с каких адресов разрешить подключение.
Я обычно не использую vpc, потому что нахуй надо платить лишние бабки.
Что есть:
- Мой ПК со средой разработки, гитом и проектом (вообще, это ларавел с пострес базой, но я пока урезал осётра и пытаюсь просто развернуть один сраный файл index.php без фреймворков, баз, композера и прочего оркестра).
- На гитлабе создал аккаунт, репозиторий, ssh ключ и руннер. В списке руннеров он зелёный, со статусом Runner is online.
- Виртуалка с Ubuntu Server, 192.168.64.130.
На ней установил GitLab Runner:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner
Настроил сам руннер:
gitlab-runner register
URL GitLab: https://gitlab.com/
Токен: тут_мой_токен
Тип Runner-а: docker
name for the runne: runn_local
default Docker image: php:8.3-fpm -вот этот момент я не понял
gitlab-runner status возвращает gitlab-runner: Service is running
gitlab-runner verify возвращает Verifying runner... is valid
То есть, руннер, вроде как, нормально работает.
И ещё тут настроил /etc/gitlab-runner/config.toml: https://pastebin.com/9R9130bY
На той же Убунте установил докер.
Заодно сделал запуск докера от обычного юзера: sudo usermod -aG docker gitlab-runner
Команда systemctl status docker возвращает active (running). Вроде всё тоже ок.
Затем в проекте создал Dockerfile
FROM php:8.3-fpm
COPY . /var/www/html
и .gitlab-ci.yml: https://pastebin.com/dQBJ7VdQ
Пушу в гитлаб, повляется новый пайплайн и на этапе деплоя валится ошибка:
$ docker run -d -p 8080:80 myapp
Unable to find image 'myapp:latest' locally
docker: Error response from daemon: pull access denied for myapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 125
Я уже осатанел. Чатгпт водит кругами, в статьях по докеру каждый пишет свои версии конфигов (которые обязательно не подходят мне и не работают), а мне нужно просто развернуть эту хрень ну хоть как-нибудь, чтобы уже начать разбирать подробно все части конфигов. Пока что у меня ноль понимания, как это работает. В чём сейчас у меня ошибка?
Что есть:
- Мой ПК со средой разработки, гитом и проектом (вообще, это ларавел с пострес базой, но я пока урезал осётра и пытаюсь просто развернуть один сраный файл index.php без фреймворков, баз, композера и прочего оркестра).
- На гитлабе создал аккаунт, репозиторий, ssh ключ и руннер. В списке руннеров он зелёный, со статусом Runner is online.
- Виртуалка с Ubuntu Server, 192.168.64.130.
На ней установил GitLab Runner:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner
Настроил сам руннер:
gitlab-runner register
URL GitLab: https://gitlab.com/
Токен: тут_мой_токен
Тип Runner-а: docker
name for the runne: runn_local
default Docker image: php:8.3-fpm -вот этот момент я не понял
gitlab-runner status возвращает gitlab-runner: Service is running
gitlab-runner verify возвращает Verifying runner... is valid
То есть, руннер, вроде как, нормально работает.
И ещё тут настроил /etc/gitlab-runner/config.toml: https://pastebin.com/9R9130bY
На той же Убунте установил докер.
Заодно сделал запуск докера от обычного юзера: sudo usermod -aG docker gitlab-runner
Команда systemctl status docker возвращает active (running). Вроде всё тоже ок.
Затем в проекте создал Dockerfile
FROM php:8.3-fpm
COPY . /var/www/html
и .gitlab-ci.yml: https://pastebin.com/dQBJ7VdQ
Пушу в гитлаб, повляется новый пайплайн и на этапе деплоя валится ошибка:
$ docker run -d -p 8080:80 myapp
Unable to find image 'myapp:latest' locally
docker: Error response from daemon: pull access denied for myapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 125
Я уже осатанел. Чатгпт водит кругами, в статьях по докеру каждый пишет свои версии конфигов (которые обязательно не подходят мне и не работают), а мне нужно просто развернуть эту хрень ну хоть как-нибудь, чтобы уже начать разбирать подробно все части конфигов. Пока что у меня ноль понимания, как это работает. В чём сейчас у меня ошибка?
Эээ ну наверно в докерфайле нужно делать docker run -t myapp и прочие параметры, но это не точно
Мне нужно поднять кластер (их потом будет много разных) со всеми ), нодгруппы в которой крутиться мое приложение(фронт + бек), которое должно иметь доступ к рдс в которой уже настроена моя бд и подключена к дефолтному впс. Дефолтную впс я использовать не могу т.к. кластеров будет много и они будут конфликтовать.
Что я сделал:
- создаю впс под кластер
- делаю паблик роут тейбл + интернет гейтвей
- под роут тейбл добавляю сабнеты
- добавляю впс пирининг для конекта моей впс и дефолтной впс на которой рдс
- прописываю секьюрити группы под впс
В итоге я неделю сосу хуй, коннекта с моих контейнеров к бд нет и я не могу понять где я проебался, я не понимаю как дебажить это говно. Базу то я знаю +- мне чуть глубже надо.
> docker: Error response from daemon: pull access denied for myapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Ты перед пулом делаешь докер логин и он возвращае саксесс? Если да, посмотри как записан твой контейнер в реждистри, он может создаваться как myapp-myimage:latest и тогда пул его не видит.
Добро пожаловать в aws, как говориться. Тебе придётся прописать 100500 миллионов конфигураций, прежде чем это всё заработает. Вообще, не изобретай велосипед. Разверни вот этот шаблон ---> https://github.com/aws-samples/aws-saas-factory-eks-reference-architecture С нуля ты заебёшься это всё создавать, месяца два уйдёт чтобы накостылить то что ты хочешь. Aws уже подсуетился за тебя, ты всё равно всех супер-тонкостей не знаешь.
Вот пример с vpc + eks + секюрити группами, как это грамотно делается
https://github.com/aws-samples/aws-saas-factory-eks-reference-architecture/blob/main/lib/eks-cluster-stack.ts
Я надеюсь, ты же ведь не из админки ручками создаёшь, ведь так? Если да, то это пиздец. Там только в шаблоне заменишь dynamodb на rds, и может споты включишь.
>Ты перед пулом делаешь докер логин и он возвращае саксесс? Если да, посмотри как записан твой контейнер в реждистри
Честно говоря, ничего не понял. Я делаю только то, что описал выше. Может, посоветуешь какой-то мануал для особо тупых с нуля?
ты не путаешь vpc с private subnet?
На всякий уточню, в VPC A прописаны роуты к VPC B? в VPC B прописаны роуты к VPC A? DNS resolution for peering connections включен?
Нужно убедиться, что на сетевом уровне все ок, для начала - https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html
По-моему, придется руками создать DNS запись в твоей EKS VPC, которая указывает на RDS, но могу пиздеть.
У тебя есть еще причины, кроме
>Дефолтную впс я использовать не могу т.к. кластеров будет много и они будут конфликтовать.
Какие кластера будут конфликтовать? Опиши ситуацию, может ты не очень подходящее решение выбрал
В gitlab-ci у тебя только сборка. Тебе нужно docker push прописать. Как вариант в реджистри самого проекта в гитлабе. Тогда с кредами запары меньше будет
Всем доброго времени суток.
Давно решался на вкат куда-либо и аноны с другой доски ,отталкиваясь от моего образования, конечно получал я его достаточно давно - это даже не вышка, но за это время сильно дегродировал,посоветовали мне devops.
Буду ставить линукс, а пока расскажите
С чего мне начать?
Условия в которых я нахожусь не самые хорошие ,но есть доступ к ноуту и огромное желание развиваться. Я понимаю ,что есть курсы - большая часть из которых это "парашаунитазная". Может есть хорошие пусть и платные курсы.
Я готов и без курсов заняться самообразованием, много читать и записывать нужное для себя.
В интернете искать бестолку, так как там рыночек потребления и все предлагают своё.
Короче говоря двигаюсь в этом направлении.
Кто может расписать по пунктам , что следует изучать, может у кого есть ссылки на ресурсы?
Одним словом помогите
>но за это время сильно дегродировал,посоветовали мне devops
А че, норм. С просмотра вакансий начни и выпиши список требований. Начинай учить те что встречаются чаще всего
Вводные: бек на го, использует постгрю и кафку, сам код хранится на гх, я читал доку GitHub Actions, вроде можно на своем железе сделать раннер, но я так и не понял, можно ли через него делать CD
Или на коленке это хер сбацаешь и лучше найти студентика девоспера
Можно делать что угодно, в общем-то.
Рассматривай всю эту ебалу как обычный скрипт. Скажешь - будет и CI и СD и тесты и линтеры, даже небо, даже Аллах.
А приложение-то где запущено? виртуалка/кубер/лямбда функция/еще какая-то хуйня?
> А приложение-то где запущено?
Локально)
Как раз нужно где то эту ебалу поднять, пох платно/бесплатно, чтобы была кнопка "накатить версию" и все
Если надо будет арендовать VPS, арендую
Чтобы по айпишнику можно было через постман дернуть сервис да логи посмотреть
На vps ставишь k3s без traefik. Ставишь нормальный ингресс.
Прикручиваешь днс.
В пайплайне делаешь шаг kubectl apply -f файла с мантфестами (попроси чатгпт тебе сгенерировать)
Логи смотреть через kubectl/дашборд/плагин в иде.
Это самый бомжатский вариант
Добра, буду разбираться
>>310133
> На всякий уточню, в VPC A прописаны роуты к VPC B? в VPC B прописаны роуты к VPC A? DNS resolution for peering connections включен?
Роуты прописаны, на счет днс не уверен
> Опиши ситуацию, может ты не очень подходящее решение выбрал
Есть авс аккаунт на котором стоят: рдс с кучей баз внутри, такая же куча ec2 которые подключены к рдс, все это на дефолтной VPC с дефолтными секьюрити. Теперь нужно все это добро перенести в екс кластеры и они должны быть изолированы друг от друга. В идеале мне нужно сделать шаблон который бы поднимал кластер с нод группой и остальными приколами и оно сразу работало.
> Какие кластера будут конфликтовать?
Я попробовал использовать дефолтную впс, но при деплое мне выдало ошибку про конфликт(уже не помню что именно) + чатгпт и на остальных ресурсах пишут что это плохая практика. Но я только вкатываюсь и пока толком ниче не понимаю как это должно быть
Добра, буду разбираться
>>310133
> На всякий уточню, в VPC A прописаны роуты к VPC B? в VPC B прописаны роуты к VPC A? DNS resolution for peering connections включен?
Роуты прописаны, на счет днс не уверен
> Опиши ситуацию, может ты не очень подходящее решение выбрал
Есть авс аккаунт на котором стоят: рдс с кучей баз внутри, такая же куча ec2 которые подключены к рдс, все это на дефолтной VPC с дефолтными секьюрити. Теперь нужно все это добро перенести в екс кластеры и они должны быть изолированы друг от друга. В идеале мне нужно сделать шаблон который бы поднимал кластер с нод группой и остальными приколами и оно сразу работало.
> Какие кластера будут конфликтовать?
Я попробовал использовать дефолтную впс, но при деплое мне выдало ошибку про конфликт(уже не помню что именно) + чатгпт и на остальных ресурсах пишут что это плохая практика. Но я только вкатываюсь и пока толком ниче не понимаю как это должно быть
Если я правильно понял то тебе просто нужно прописать 1 конфиг конфиг ci который бы при пуше в репозиторий тригерил твой ранер локальный и делал git pull.
там тебе k3s советуют, но это, наверное, если тебя слегка попердолиться тянет.
Если что-то более наколеночное нужно, то можно
1. Сделать машину, на которой запущено приложение github runnerом
2. Создать свой сраный workflow. Тут уже зависит от того, как у тебя сделано сейчас/как ты хочешь/как ты можешь - в целом, должно быть что-то такое по стадиям:
- Чекаут - качаем код на целевую машину
- Настройка энва, т.е качаем Go, какие-то зависимости, устанавливаем значения переменных (переменные и их значения можно хранить прямо в GitHub)
- Билд - собираем, получаем бинарник/контейнер, в общем конечный артефакт
- Заменяем текущую хуйню на сбилженую хуйню
Максимально простой пример
# .github/workflows/deploy.yml
name: Simple Go Deployment
on:
push:
branches: [ main ]
workflow_dispatch:
env:
APP_NAME: sampleapp
DEPLOY_PATH: /opt/sampleapp
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Go
run: |
go version
go env -w GOPROXY=direct
- name: Build application
run: |
go build -o ${{ env.APP_NAME }}
- name: Deploy
run: |
# Stop existing service if running
sudo systemctl stop ${{ env.APP_NAME }} || true
# Create deploy directory if it doesn't exist
sudo mkdir -p ${{ env.DEPLOY_PATH }}
# Copy new binary
sudo cp ${{ env.APP_NAME }} ${{ env.DEPLOY_PATH }}/
# Set permissions
sudo chown -R go-app:go-app ${{ env.DEPLOY_PATH }}
sudo chmod +x ${{ env.DEPLOY_PATH }}/${{ env.APP_NAME }}
# Start service
sudo systemctl start ${{ env.APP_NAME }}
Принцип должен быть понятен, наверное. Я, обычно, всякую личную мелочь пихаю в docker-compose, все что нужно потом,это подменить (тупой sed compose файла, например) версию image на нужную, ну и что бы нужная версия image была где-то доступна) docker hub или локальный registry, как вариант. Сразу скажу, что никакими хорошими практиками тут и не пахнет.
там тебе k3s советуют, но это, наверное, если тебя слегка попердолиться тянет.
Если что-то более наколеночное нужно, то можно
1. Сделать машину, на которой запущено приложение github runnerом
2. Создать свой сраный workflow. Тут уже зависит от того, как у тебя сделано сейчас/как ты хочешь/как ты можешь - в целом, должно быть что-то такое по стадиям:
- Чекаут - качаем код на целевую машину
- Настройка энва, т.е качаем Go, какие-то зависимости, устанавливаем значения переменных (переменные и их значения можно хранить прямо в GitHub)
- Билд - собираем, получаем бинарник/контейнер, в общем конечный артефакт
- Заменяем текущую хуйню на сбилженую хуйню
Максимально простой пример
# .github/workflows/deploy.yml
name: Simple Go Deployment
on:
push:
branches: [ main ]
workflow_dispatch:
env:
APP_NAME: sampleapp
DEPLOY_PATH: /opt/sampleapp
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Go
run: |
go version
go env -w GOPROXY=direct
- name: Build application
run: |
go build -o ${{ env.APP_NAME }}
- name: Deploy
run: |
# Stop existing service if running
sudo systemctl stop ${{ env.APP_NAME }} || true
# Create deploy directory if it doesn't exist
sudo mkdir -p ${{ env.DEPLOY_PATH }}
# Copy new binary
sudo cp ${{ env.APP_NAME }} ${{ env.DEPLOY_PATH }}/
# Set permissions
sudo chown -R go-app:go-app ${{ env.DEPLOY_PATH }}
sudo chmod +x ${{ env.DEPLOY_PATH }}/${{ env.APP_NAME }}
# Start service
sudo systemctl start ${{ env.APP_NAME }}
Принцип должен быть понятен, наверное. Я, обычно, всякую личную мелочь пихаю в docker-compose, все что нужно потом,это подменить (тупой sed compose файла, например) версию image на нужную, ну и что бы нужная версия image была где-то доступна) docker hub или локальный registry, как вариант. Сразу скажу, что никакими хорошими практиками тут и не пахнет.
Хуле там расписывать блять, в интернете всё есть. Заходишь на гитхаб, вбиваешь в поиск "go path:.github/workflows lang:Yaml" и копируешь интересные файлики себе.
Вот прямая ссыль на поиск:
https://github.com/search?q=go+path%3A.github%2Fworkflows+lang%3AYaml&type=code
Макака, пидарас, опубликуй список ебаных спам слов, ты ебанутый что ли?
Текст поста приложил пикчей
Ебать, какая же залупа. Все это ваше DevOps ci\cd , оно существует исключительно в конторах от 10 человек. То есть нельзя быть домашним хиккой, дрочить в соло линуксы, и в рамках хобби прожектов додрочиться до devops. Потому что DevOps не проистекает натуральным образом из никакого хобби прожекта. Он применим только в средней или большой коммерческой фирме.
Дроча линуксы дома, можно додрочиться до ядра, загрузчика, железной системы, базы сетей по всему уровню ОСИ, обходу блокировок побайтово ну и т.д.
Но вот DevOps, он просто не может быть хобби, это сугубо работа мать ее за деньги, на дядю , с 9 до 18 плюс созвоны и переработки.
> Чего сказать то хочешь?
То что вы все офисная рабская соя.
Вроде и работаете с линупсом, но обмазанным таким слоем вендорского корпоративного кала, что никакой романтики в этом нет.
ой, иди ты нахуй
опенсорс проектов хоть жопой жуй, только выбирай
дома додрочиться до этого сложно, потому что дома в хуй не впились сборки на каждый пук, с ебнутыми требованиями, но при желании - возможно
работа с линупсом, кстати, не обязательна.
а без вендорского кала,у тебя не получилось бы даже пост тут опубликовать. хуею с этих колокольчиков из манямирка, что б тебе зарплату платили валентинками, пидарас ты тупой
>что б тебе зарплату платили валентинками
Ну а хули, романтично, большинство же за идею работают лол. Каникулы что ли начались какая-то школота по тредам бегает
Всё так. А можно задрачивая линукс и сети дома додрочиться до безопасника или там тестировщика/пентест-хацкера? Или хотя бы до просто сисадмина?
Для СI/CD есть Auto DevOps в гитлабе. Для небольших команд.
Также ChatGPT o1 сам за минуту напишет pipeline средней сложности.
Через пару лет эволюции эту штука сама будет все фиксить и настраивать по промту
>Когда автоматизируют девопсеров?
Я плейбуки, докерфайлы и пайплайны давно уже aider'ом пишу. Надо только примеров удачных в контекст добавить и версии перепроверить, он в них не силён.
А так у меня вся работа свелась к тому чтобы орать на разрабов чтобы они метрики и хелсчеки добавлять не забывали.
Алсо autodevops - говно. Разобраться как он работает дольше, чем свои пайплайны писать.
> Когда все бизнесы станут одинаковыми?
Ну я, блять, даже не знаю!
Если все бизнесы будут одинаковым, то в первый бизнес будучи самым прибыльным перетекут все деньги и он остается на планете один.
вот тогда и не нужно будет разбираться ни в чем новом и нейросеть автоматизирует все роли.
Добра анон
ля vars:
vars:
dir_list:
- src: "{{ source_asset_fullpath_common }}"
dest: "{{ dest_project_rootpath }}"
default_mode: '0775'
- src: "{{ source_asset_fullpath_project }}"
dest: "{{ dest_project_rootpath }}"
default_mode: '0775'
- cоздать роль, которая копирует всё содержимое папку из src в папку dest, включая вложенные папки, и так же шаблонизировать файлы j2, убрав расширение j2.
Чего только я ни писал из того, что мудрили индийцы на SO и нейронки GPT-o1... Везде ошибки с экранизацией переменных в роли или просто конфликтом `loop`, `with_community.general.filetree` и `file_glob`, испольуземых одновременно.
В итоге решилось всё это питонячим скриптом, лежащим в action_plugins: https://github.com/geluk/template_tree
Кста, на весь Гитхаб три с половиной решения моей хотелки.
Ну и как вызывать сее питоняшное гумно в плейбуке:
- name: Copy files recuresively and template them
template_tree:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
file_mode: "{{ item.default_mode | default('0775') }}"
directory_mode: "{{ item.default_mode | default('0775') }}"
with_items: "{{ dir_list }}"
Интересно, это Ansible плохо расположен к таким задачам, или нейросети ниасилили довольно простой кейс?
ля vars:
vars:
dir_list:
- src: "{{ source_asset_fullpath_common }}"
dest: "{{ dest_project_rootpath }}"
default_mode: '0775'
- src: "{{ source_asset_fullpath_project }}"
dest: "{{ dest_project_rootpath }}"
default_mode: '0775'
- cоздать роль, которая копирует всё содержимое папку из src в папку dest, включая вложенные папки, и так же шаблонизировать файлы j2, убрав расширение j2.
Чего только я ни писал из того, что мудрили индийцы на SO и нейронки GPT-o1... Везде ошибки с экранизацией переменных в роли или просто конфликтом `loop`, `with_community.general.filetree` и `file_glob`, испольуземых одновременно.
В итоге решилось всё это питонячим скриптом, лежащим в action_plugins: https://github.com/geluk/template_tree
Кста, на весь Гитхаб три с половиной решения моей хотелки.
Ну и как вызывать сее питоняшное гумно в плейбуке:
- name: Copy files recuresively and template them
template_tree:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
file_mode: "{{ item.default_mode | default('0775') }}"
directory_mode: "{{ item.default_mode | default('0775') }}"
with_items: "{{ dir_list }}"
Интересно, это Ansible плохо расположен к таким задачам, или нейросети ниасилили довольно простой кейс?
> выкатываю базу:
> работать работу и учить учебу это две разные вещи.
> то что ты получишь в процессе обучения не даст тебе абсолютно никакого практического опыта, поэтому что-то заучивать нет смысла вообще.
> за 4 месяца двух корешов устроил на первую работу за сотыгу
> для успешного найма тебе понадобится:
> ТАКИЕ
> ЗНАНИЯ
> КАК
> докер, докер компот к нему.
> выучить синтаксис, из чего строится файл, без чего его не создать, как оптимизировать размер образа и т.д и т.п.
> самый излюбленный вопрос на собесах - отличие add от copy, компоненты докера ( обычно задают в конце, если от зубок говоришь неймспейсы и сигруппы от тебя отъебываются и идут дальше).
> ансибл.
> знать синтаксис недостаточно, нужно писать все самому и смотреть что зачем и почему. гуглишь бест практикс, регаешь гугл клауд, берешь тачку и ставишь на него все подряд через ансибл.
> вагранты и прочая хуйня идет нахуй, учись сразу все делать в облаке ( + там твой линух будет без гуи и ты будешь работать только через терминал)
> кубер, гитлаб.
> умоляю учи кубер блять только не в миникубе. проще всего для обучения взять яндекс клауд, там поднимаешь кубер, гитлаб, раннеры и регистры.
> тут ничего такого подсказать не могу, если ты хорошо выучил остальное, то тебе будет просто. считай с ямликами ты уже работал, докер образы делал, в докер композе немного аркестрировал, нужно лишь выучить основные сущности в кубере и потыкаться недельку.
> гитом надеюсь пользоваться умеешь. пушишь репу, смотришь у индусов как пайплайн строится, пару раз по видосу делаешь, дальше плаваешь сам.
> в целом это все, я не пишу про знания линуха потому что без этого вообще не надо рыпаться в девопс, очень мало компаний где работают на другой платформе. как настроить нгинкс и все остальное дело пары дней, смотришь по вакансии что нужно и подгоняешь.
> РЕЗЮМЕ
> если у тебя трудовая измазана в не айтишной тематике то смело нахуй.
> если у тебя есть опыт в тех поде или где-то еще, то пишешь что работал девопсом, в трудовой обычно не пишут ТЕХСЫЧ 1 ЛИНИИ, обычно у всех что-то около специалист чего-нибудь и все.
> на собеседовании не нужно мямлить, погугли реальные проекты, чтобы когда спрашивали чем занимался, то смог ответить. можешь посмотреть резюме других людей и сделать такое же, можешь даже им написать и спросить чем они занимаются.
> на этом все, заебался писать эту залупу.
> выкатываю базу:
> работать работу и учить учебу это две разные вещи.
> то что ты получишь в процессе обучения не даст тебе абсолютно никакого практического опыта, поэтому что-то заучивать нет смысла вообще.
> за 4 месяца двух корешов устроил на первую работу за сотыгу
> для успешного найма тебе понадобится:
> ТАКИЕ
> ЗНАНИЯ
> КАК
> докер, докер компот к нему.
> выучить синтаксис, из чего строится файл, без чего его не создать, как оптимизировать размер образа и т.д и т.п.
> самый излюбленный вопрос на собесах - отличие add от copy, компоненты докера ( обычно задают в конце, если от зубок говоришь неймспейсы и сигруппы от тебя отъебываются и идут дальше).
> ансибл.
> знать синтаксис недостаточно, нужно писать все самому и смотреть что зачем и почему. гуглишь бест практикс, регаешь гугл клауд, берешь тачку и ставишь на него все подряд через ансибл.
> вагранты и прочая хуйня идет нахуй, учись сразу все делать в облаке ( + там твой линух будет без гуи и ты будешь работать только через терминал)
> кубер, гитлаб.
> умоляю учи кубер блять только не в миникубе. проще всего для обучения взять яндекс клауд, там поднимаешь кубер, гитлаб, раннеры и регистры.
> тут ничего такого подсказать не могу, если ты хорошо выучил остальное, то тебе будет просто. считай с ямликами ты уже работал, докер образы делал, в докер композе немного аркестрировал, нужно лишь выучить основные сущности в кубере и потыкаться недельку.
> гитом надеюсь пользоваться умеешь. пушишь репу, смотришь у индусов как пайплайн строится, пару раз по видосу делаешь, дальше плаваешь сам.
> в целом это все, я не пишу про знания линуха потому что без этого вообще не надо рыпаться в девопс, очень мало компаний где работают на другой платформе. как настроить нгинкс и все остальное дело пары дней, смотришь по вакансии что нужно и подгоняешь.
> РЕЗЮМЕ
> если у тебя трудовая измазана в не айтишной тематике то смело нахуй.
> если у тебя есть опыт в тех поде или где-то еще, то пишешь что работал девопсом, в трудовой обычно не пишут ТЕХСЫЧ 1 ЛИНИИ, обычно у всех что-то около специалист чего-нибудь и все.
> на собеседовании не нужно мямлить, погугли реальные проекты, чтобы когда спрашивали чем занимался, то смог ответить. можешь посмотреть резюме других людей и сделать такое же, можешь даже им написать и спросить чем они занимаются.
> на этом все, заебался писать эту залупу.
Насколько я понимаю, в девопсе это все необходимо знать, но раз я иду в поддержку, то встаёт вопрос о необходимости изучения этого всего на данном этапе. То бишь, хотелось бы выделить максимально первостепенные навыки, аналогичные знанию линукса, а далее уже по нарастающей делать акценты и углубляться. В целом, хотелось бы услышать про ваш опыт обучения.
>>308953
>>310203
Я всё ещё пытаюсь просто развернуть ссаный сервер с php в контейнере через гитлаб. Всё работает - билд зелёный, деплой зелёный, руннер на гитлабе зелёный, образ в Container Registry обновляется при каждом пуше.
Но на сервере пусто. Что, блин, не так? Эта падла при выполнении скрипта деплоя говорит, что контейнер запущен - но нет, нихуя, нету блядь этого контейнера на сервере! Ну как так-то?! Что это за блядские танцы с бубном? Эта хуйня ДОЛЖНА работать. Она ОБЯЗАНА работать. Она для этого буквально создана. Какого трижды ёбаного хера ей надо?
Хули мозг анонам ебешь? Найми индуса (любой национальности) за $20, посмотришь как он сделает.
ну очевидно что у тебя контейнер пропукивает пару секунд и гасится, так как основной процесс (php-fpm) видимо просто завершается сразу после запуска.
Как вариант >>315283 У себя локально проверь что контейнер работает продолжительное время.
А по факту из за того то у тебя dind в деплое ты запускаешь свой контейнер не на хосте а в том сервисном контейнере с докером и конечно после заверения джобы все киляется. Попробуй лучше сокет докера на раннер прокинуть чтоб и сборка и деплой через докер на хосте шел, так даже быстрее будет
>Интересно, это Ansible плохо расположен к таким задачам
Это ты просто занимаешься какой-то хуйней.
>которая копирует всё содержимое папку из src в папку dest, включая вложенные папки
Не нужно ни для чего.
- Положи эту директорию в докер образ.
- Сделай 1 шаблонизированный конфиг через jinja и смонтируй его в контейнер.
Не понял что ты тут делаешь, тебе явно удалять старый контейнер не нужно при перезапуске с компоуза он сам дропнет старый и поднимет новый.
Если тебе нужно просто поднять nginx то можешь брать образ с официального репозитория и уже туда прокинуть свой конфиг.
Ну и другие аноны правильно писали что контейнер сдыхает судя по всему, у тебя в гитлабовском пайплайне видно что он стартует и он либо дохнет, либо ты его не там ищешь (на другом серваке).
Алсо проиграл с этого шифровальщика
>удали блок services, должно завестись
Не, если удалить, то даже билд не запускается.
Я понимаю, что этот билд и деплой запускаются в какой-то волшебной стране розовых единорогов и тут же завершаются, но не понимаю, почему так происходит и как вывести это всё в реальный мир.
>>315586
>Алсо проиграл с этого шифровальщика
Лол, и правда. Ну и ладно, я по привычке обезличивал. Всё равно аккаунт создавал новый, специально для этих экспериментов.
>Не, если удалить, то даже билд не запускается.
Скинь ошибку. Ты уверен что у тебя пайплайн на твоем раннере запускается? В пайплайне тегов не вижу а в публичном гитлабе по дефолту шаред раннеры доступны, подозреваю что твой билд на них попал и обмяк - перепроверь это
>у тебя пайплайн на твоем раннере запускается?
Вот оно! Вот где собака была зарыта. Выполнялся на одном из дефолтных. А я-то всё не мог понять, где эта страна розовых единорогов. Проверил, увидел чужой тег, отключил к хренам галку Enable instance runners for this project, прописал в конфиге парамер tags для запуска под именно моим раннером. Потом ещё в конфиге раннера на сервере добавил network_mode = "host", чтобы он мог использовать сетевые настройки хоста, и сделал удаление ненужных профилей sudo aa-remove-unknown, потому что без этого юзер мог старотовать контейнер, но не остановить/удалить его.
Всё, у меня настроен минимальный деплой. 16 дней на это потратил (примерно 10 вечеров, часа по 3-4 каждый). Пиздец я днище. И это только на то, чтобы просто запустить. Если бы сразу догадался про то, что после создания своего раннера, гитлабу наплевать на него и нужно прописывать (кучу инструкций нарыл, везде либо нет ничего про теги, либо вскользь), то сэкономил бы половину этого времени, не меньше.
>Потом ещё в конфиге раннера на сервере добавил network_mode = "host", чтобы он мог использовать сетевые настройки хоста
Нахуя тебе на ранере это включать? Ты долбаеб нах ему твоя сеть нужна это же не контейнер с твоим пхп. Да даже твоему контейнеру с php это не нужно нахуя себе заранее палки в колеса вставляешь додик?
Без этого при билде (или деплое, не помню уже) в логах гитлаба ошибка резолва https://gitlab.com/ . Я загуглил, чё делоть, списал с СО ответ, заработало.
А вот ебучий AppArmor оказывается после перезагрузки снова ебёт мозги. Пока не сделаешь aa-remove-unknown, он не даёт юзеру, который работает с докером, ни останавливать, ни удалять старые контейнеры, мразина. Ёбаный паровоз, всё сделано максимально не для людей, а чтобы ты ощущал свою мизерность и ничтожность.
$ docker stop docker-default || true
Error response from daemon: cannot stop container: docker-default: permission denied
$ docker rm docker-default || true
Error response from daemon: You cannot remove a running container 524660a21fda9c461be8d908b8ad073d7f55d90bf4f3e004ff406c75eab4d686. Stop the container before attempting removal or force remove
$ docker run -d -p 80:80 --name docker-default "$CI_REGISTRY_IMAGE:latest"
docker: Error response from daemon: Conflict. The container name "/docker-default" is already in use by container "524660a21fda9c461be8d908b8ad073d7f55d90bf4f3e004ff406c75eab4d686". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit code 125
>Ёбаный паровоз, всё сделано максимально не для людей, а чтобы ты ощущал свою мизерность и ничтожность.
Ты просто еблан делаешь через жопу никто так не деплоит кроме госшараг
А как надо? Я серьёзно спрашиваю. Нормальный способ объяснения чего-либо - это сначала дать простой стартер гайд, а потом накидывать в него всякого разного. И потом добавить до кучи уж совсем редкоиспользуемое и сложное в виде справочника. Но я не нашёл ничего, что мне бы помогло, хотя искал много, в браузере почти сотня вкладок с гайдами, конфигами и объяснениями. Они не работали, потому что авторы просто игнорировали какие-то "мелкие вещи". Можно сказать "да ты тупой просто" и я даже спорить не буду.
А AppArmor снёс к хуям. И всё работает.
>Easy to Learn, Hard to Master
Я себе на это неделю закладываю, дальше буду в jenkins пытаться.
Не знаю как в гитхабе, на гитлабе после создания ранера тебе дают четкую инструкцию что прописать что б зарегать ранер и сделать связь между проектом и ранером. Хз что ты смотрел и где, но это делается за 1 минуту, создаешь ранер с уникальным тегом, тот же тег прописываешь в ранере, все.
У чат гопоты спроси, там и ответы найдёшь. А как вкатишься все рабочие моменты через гопоту решишь.
Не трать время на дрочь технологий! Иди на улицу траву потрогай и на тянок посмотри!
Звучит как шутка. Однако времени много таким образом сэкономил. Просто многие усираются за чтение, но я ни одной книги так и не осилил, максимум документация или гайды.
мне CCNA хватило, но я и поработал в телекоме немного
>На каком уровне необходимо знать сети?
IP, таблица маршрутизации, dhcp, dns, tcp, http. Это база на которой можно работать годами. Остальное при необходимости раскуришь.
Допустим, у меня в репозитории есть всякий код и ветка main (или master). Туда все мержится и автоматически раскатывается.
Допустим, происходит какая-то авария и выясняется что код плохо написан (и плохо протестирован тоже).
Какие конкретно команды нужно теперь подать чтобы "перемотать" main назад до старого состояния коммита?
А как потом снова сделать нормально ?
Вот я делаю git revert, но он нудит что не может разобраться куда делся README.
Я понимаю что есть всякая хрень типа helm revert, но хочу разобраться как бы это было бы на чистом git
Понял что он от меня хочет ручного удаления файла и вообще чтобы я создал коммит, который действительно удалил бы файлы.
Но это разве нормально?
как в git традиционно решали эту проблему?
Пасаны, я все понял!
Просто я английский херово понимаю.
git revert не откатывает ДО указанного коммита, а откатывает указанный коммит.
В моей ситуации нужно указать список коммитов чтобы откатиться к началу.
Я в двачгпт запросы отправляю.
Я хуею как девопсы сразу на высокий уровень абстракции залетают. А если внутри контейнера что-то отгнило, то вяло обмякают.
1. Есть n репов, в каждой лежит докерфайл. Всё это нужно склеить через docker-compose воедино. Как это всё лучше организовать, чтобы надо мной не смеялись?
Как мне видится, можно:
- упразднить все отдельные репы и сделать одну гигантскую репу со всем этим говном, где оно будет сразу лежать иерархически
- сделать отдельную репу с докер-компоуз.ймл и в ней сделать какой-нить ./deploy.sh который склонирует/пульнет репы по мере необходимости (или симлинкнет, если мы на локалхосте в дев-режиме).
- вообще не индексировать докер-компоуз.ймл
У каждого решения минусов больше, чем плюсов, поэтому наверняка есть варианты лучше.
2. Ещё важный фактор: часть сервисов потихоньку начинает опираться на один и тот же код и одни и те же шеллскрипты для всякого мейнтейненса, генерации бойлерплейта, etc. Есть варианты, как это расшарить, кроме очевидных гитовых сабмодулей, которые мне насрут несколько чекаутов одинаковой хуйни?
Дево-пёсики, миленькие, помогите!
Что сабмодульс? Все репы подключать сабмодулями в "корневую" репу с docker-compose и расшаренное тоже подключать через сабмодули в репах, которые и сами сабмодули? Неужели у проблемы совсем нет хороших решений?
Каждая репа должна высирать свой артефакт: образ, бинарник, скрипт.
Отдельная репа с docker-compose, пайплайном пуллит в себя все эти образы, тянет бинаркники и делает up.
>пуллит в себя все эти образы
В смысле? Просто качает их с какого-нибудь гитлаба, подразумевая, что они там уже собранные лежат, а если не лежат - это проблемы репы, для которой не собрался образ?
>Просто качает их с какого-нибудь гитлаба, подразумевая, что они там уже собранные лежат
this
>если не лежат - это проблемы репы
this
Чем самостоятельнее и изолированее артефакт, тем крепче ты спишь
Чёт блять какая-то хуйня понаписана. Твоя проблема вообще не в докере. А в общей черезжопной организации проекта, где всё держится на каких-то шеллфайлах деплоя deploy.sh. Вместо того, чтобы сделать отдельный проект, а-ля my-project-infrastructure, где декларативно описывать инфраструктуру кодом, то есть взять какой-нибудь pulumi или terraform или ещё что. Где все саб-проекты можно организовать в стеки. А эти шелл файлы деплоя снести нахуй, докер компоуз можно оставить для локальной разработки, чтобы поднять все сервисы сразу.
Если у тебя прямо очень много репо, то скорее всего это микросервисы. Микросервисы - это про копирование кода (в отличии от SOA). Тогда тебе нужно просто взять и скопировать свои докерфайлы и т.д., это будет самое простое и правильное решение.
Переиспользовать docker-compose - это бред. Там нечего переиспользовать.
Ну что ты хочешь распространять? Настройки логирования? Так это 4 строчки. Что еще?
Жутко параметризованная очень простая хуйня, гораздо хуже просто втупую скопированной хуйни.
>скорее всего это микросервисы
Бинго.
>Ну что ты хочешь распространять?
Судя по всему, ты про вторую часть вопроса. Распространять код. Есть либа our_proprietary_shit, которая экспортирует класс Foo. Микросервису A нужен класс Foo. Микросервису Б нужен класс Foo. Это совершенно разные сервисы решающие совершенно разные задачи, но конкретно класс Foo нужен обоим. Как лучше всего поделить между ними класс Foo? Ты предлагаешь его тупо скопировать? Неохота в нескольких местах править, если надо будет внести изменения.
И вообще как вы этому пришли и что на вас повлияло? Именно на решение и выбор.
Ну бля странный вопрос. А почему нет? Да никто ничего не выбирал. Просто тыкался во все двери и в девопсе открыли. Вот и вся история. Чистый рандом. Это не то что я прям сидел и думал, тааак куда же мне пойти. Я вообще сильно не привязан. Могу в блокчейн перейти или бекенд, это не принципиально. Что хорошего в этой профессии? Нууу можешь одной командой развернуть целый дата-центр. Это же круто.
Ну вот знаю челика, он был кодерком. Потом так вышло, что в их молодежном стартапчике ливнул девопсер, и часть его обязанностей накинули на этого челика. Пришлось раскуривать эту тему по немногу, так где то месяца два. Потом туда пришел новый девопсер, его привели к челику и сказали, вот это Вася Плюшкин, он тут крутил воротил до тебя, он тебя введет в курс дела. Тот стал выебываться типо пиздец ты тут хуйни натворил, челик ему возбухнул - покажи, говорит, как надо. Ну и тот ему стал показывать и на челика пришло озарение, что ему интересней вот это. Ну и дальше пошло поехало. Так и свичнулся из разрабов в опсы
Докером и линуксом пользовался, всякие NGINX/Traefik настравал
>terraform
Говно собаки. Пробовал писать под него скрипты. В итоге полюнул, и сделал обёртку для API хостера на TS. В HCL ни циклов, ни нормальнго рефакторинга, нихуя. Эти дауны не поняли, что надо не свой язык изобретать, а делать бинарник и к нему писать либы на разных языках
Сначала, когда полностью перекатился на фулдевопс таски скулил каждый день, потому что сложно и старшие товарищи чморили. Грубо говоря не утонул, только за счет экспертизы в кодинге.
Но со временем поднаторел.
>По зп/ебланству
Ну щас уже как в том анекдоте, про ремонт самолета.
Платят за то, что знаешь куда ударить.
>В HCL ни циклов, ни нормальнго рефакторинга, нихуя
Ну не пизди. Циклы есть, специально для таких тупых придумали CDKTF https://developer.hashicorp.com/terraform/cdktf
>Эти дауны не поняли, что надо не свой язык изобретать
Инструментов iac дохуищи. Есть crossplane. Есть pulumi. Есть opentofu. Есть argocd. Есть cdk. Есть ansible. Почему ты доебался именно до терраформа мне непонятно. Понятное дело, что у каждого инструмента свои плюсы и минусы. Ну изобрели язык и чё? Есть wing например https://www.winglang.io/, язык для написания инфраструктуры. Ну сделали и сделали. Надо было разрешения у тебя спрашивать что ли?
>Ну сделали и сделали
>Ну изобрели язык и чё?
Дело не в том, что сделали, а в том, что рассказывают про это, как хорошее решение. Я повёлся, попробовал, почувствовал себя обманутым. Таке чувство, что большинство девопс инструментов делаются с расчётом на то, что девопсеры не умеют писать код и им только конфиги править дают, и рассказывая, что декларативность это круто. Жопа горит
Ответьте, плез, на это
>>324736
>Циклы есть
Циклов нет. Пойди мне в цикле создай инстансы с именами kek1, kek3, kek5... хуесос пиздливый
>специально для таких тупых придумали CDKTF
Нет, дибила кусок. Я говорил про бинарник и обёртку. Ты мне показываешь говно, которое превращает код на TS в код на HCL, а потом также исполняет терраформом. То есть отсутствует контроль за происходящим. Я не могу с этой говниной, например, в цикле создать инстанцы, потом наздачить им поддомены, дождаться когда они станут доступны, а потом насоздавать ещё инстансов. И CDKTF даже без учёта этого не работает, потому, что нет провайдеров для него вечно
>Есть opentofu
Такое же говно
>Есть ansible
Хуета, которая не умеет нормально даже выводить процесс исполнеия баш команд, уродует лог, так что его невозможно читать. Пришлось свои баш скрипты писать
>Есть wing например
Я даже парашу открывать не хочу. Есть норм языки, вроде, C++, TS..... Да, хоть, питухон. Нахуй изобретают ещё один, который будет гарантированно поделкой. Нахуй вы жрёте это говно? Воистину девопсы бездарны настолько, что не могут в кодинг, который, считай, основа современной грамотности - это как не уметь писать и читать лет 100 назад
Мне приходитсяэто всё изучать, чтобы хитрые мартышки меня не наёбывали. Но то, как вы существуете и врете, как сучки, это пиздец
> Просто тыкался во все двери и в девопсе открыли. Вот и вся история.
Как я сейчас. Пока приглашают только в саппорт мониторить, а оттуда перспектива в девопс или админить, ну это в лучшем из лучших случаев. Жопой чувствую, что перну от нагрузки и не вывезу. По крайней мере это после начальных уроков по куберу такие предчувствия закрались.
Инструмент как инструмент. Ничё прям такого сверхужасного нет, примерно такой же как и cloudformation или bicep.
>>324836
>Пойди мне в цикле создай инстансы с именами kek1, kek3, kek5
Да легко variable "names" {
type = set(string)
default = ["kek1","kek3","kek5"]
}
resource "compute_instance" "instances" {
for_each = var.names
name = each.value
...
}
Либо можно через map это делать.
>дождаться когда они станут доступны
Да есть там всё, это у тебя руки из жопы растут. Берёшь null_resource и ждёшь пока создасться. В инете похожие примеры есть https://github.com/imjasonh/kontain.me/blob/b2021a0d88f558dd2c7f2dde638e9b9b97b817d3/apps.tf
> создай инстансы с именами kek1, kek3, kek5
count = 3
name = "kek${count.index * 2 + 1}"
> говно
> Хуета
> парашу
Ну что тут сказать. Ты, браток, во-первых, остынь.
Во-вторых, смешно читать, что все вокруг хуйня, а самописный костыль от вчерашней фронтенд-макаки это ОГОГО какой инструмент, всем дает пососать.
В третьих, ты попадаешь в типичную ловушку разраба, который суется в девопс. Вместо использования стандартизированных и документированных инструментов, бросаешься писать свой костыль на каждый чих, потому что лень разбираться с чем-то новым.
Ты подумай на один шаг вперед хотя бы. Понадобится тебе новый функционал - будешь свое говно рефакторить три дня к ряду. Потом вместо тебя придет такой же чсвшный петух и будет кукарекать ррряяяя что тут за быдлокод и еще на неделю присядет его переписывать на своем любимом языке.
С таким подходом тебе и кубер не нужен, его же тоже дурачки придумали. Напиши свой аналог на TS, чего мелочиться.
Блять, дочитал до
> ansible Хуета
> Пришлось свои баш скрипты писать
Ты походу совсем умом обделен, не в обиду. Даже жалею, что тебе всерьез ответил. Это походу троллинг тупостью какой-то.
>>323658
>Я хуею как девопсы сразу на высокий уровень абстракции залетают. А если внутри контейнера что-то отгнило, то вяло обмякают.
Ну такие вот как выше бедолаги и обмякают.
>Циклов нет
так они и не нужны!
Пиздец, а от sql у тебя жопа не горит? или, дай угадаю, ты sql даже не знаешь?
>Таке чувство, что большинство девопс инструментов делаются с расчётом на то, что девопсеры не умеют писать код и им только конфиги править дают
Суровая правда такова, что чем гибче и тьюриг-полнее будет инструмент, тем вероятнее макаки нахуевертят на нём неподдерживаемую стейтфул говнину, которая неожиданно для всех разломается в самый ответственный момент.
Некоторые инструменты должны быть простыми как молоток.
Попробуй еще в Crossplane окунись. Вот точно жопа сгорит.
>count = 3
>name = "kek${count.index * 2 + 1}"
Девопсер не умеет в циклы, как и ожидалось. Нормального синтаксиса не завезли, будем изобретать. keka, kekc, keke, kekg так таже работает?
>Ты, браток, во-первых, остынь.
Да, щаз. Мож мне в гроб сразу? Не, пусть ваши пятые точки слегка нагреются
>Вместо использования стандартизированных
Так нет стандартов, есть популярное говно собаки
>документированных инструментов, бросаешься писать свой костыль на каждый чих, потому что лень разбираться с чем-то новым.
Мне не лень разбираться, я как раз разобрался и мне не понравилось. Я не на каждый чих это делаю, а только на ансибл и терраформ, докер я не трогал, например, в графану просто влюбился
>самописный костыль
Тебя поимели, и ты пытаешься сделать это со мной. Всё на свете является самописным костылём. Просто тебя убедили, что один костыль лучше другого
>Ты подумай на один шаг вперед хотя бы. Понадобится тебе новый функционал - будешь свое говно рефакторить три дня к ряду
ПодумОл. Как раз таки в моём случае я могу своё говно рефакторить, а в случает терраформа я буду ждать, когда дяденька напишет код. Терраформ убогое говно нерасширяемое. Мой код расширяем. Мне надо было поддержку доменов, терреформ мне этого не давал, а мой код давал. Сделал, и мне теперь хорошо. Более того, я это могу вынести в либу и подключить к другому проекте через yarn add terrafomt-ebala, а ты нет
>Блять, дочитал до
>ansible Хуета
>Ты походу совсем умом обделен
Нет. Обделены умом те, кто используют. Почему, когда я в ансибле запускау условный apt update я не вижу в реалтайме логи???????? Мне надо логи в реалтайме без всякого мусора. Это же так просто. Уже на этом моменте становится понятно, что писал аутист. Потом я посмотрел, на чём это написано и как - петухон через жопу, который вызывает тот же самый баш, и успокоился. Потом какие-то миллион параметров, миллион флагов, а если флаг не завезли - соси хуй. В итоге всё превращается в башсибл, спрашивается, ну и зачем мне это говно? Только потому, что оно умеет в цикле по хостам ходить, ну охуеть, я это сделал за 5 минут
>С таким подходом тебе и кубер не нужен
НужОн. Я хочу контейнеры крутить, чтобы мой криптостартап, когда у него будет 1ккк пользователей быстро с одной ноды на 1000, так, хоба, и перекатился. А если серьёзно, то я просто захотел разобраться, чтобы не быть лохом и внедрить в свои микропроекты кубер. Сейчас на docker compose всё. Судя по описанию, куб умеет всё тоже, что и докер, только нормально с API, дашбордами, скейлингом и кучей тулзов. Полистал доку, потыкал ссылки и нихуя не понял с какой стороны к нему подступиться, чтобы не читать ахулиард страниц, которые также ссылаются на ахулиардж страниц, даже ни разу не запустив кластер
>>325458
Во-первых, нет никакой тьюринг-полноты, хватит этого уродливого пидора и его шизотеории пиарить. Я понимаю, ЛГБТ - это в некоторых местах планеты модно, но это же двач, тут только серьёзные и успешные люди. Во-вторых, чем гибче будет инструмент, тем больше возможностей. Гибкий инструмент может и в тупое и в умное, негибкий только в первое. Спрашивается, зачем себя ограничивать? Делать говно из-за того, что некоторые макаки не смогли осилить инструмент. Хм, а может, делают говно не по этому, а потому, что не умеют делать норм, а девопсы и так скушают
>count = 3
>name = "kek${count.index * 2 + 1}"
Девопсер не умеет в циклы, как и ожидалось. Нормального синтаксиса не завезли, будем изобретать. keka, kekc, keke, kekg так таже работает?
>Ты, браток, во-первых, остынь.
Да, щаз. Мож мне в гроб сразу? Не, пусть ваши пятые точки слегка нагреются
>Вместо использования стандартизированных
Так нет стандартов, есть популярное говно собаки
>документированных инструментов, бросаешься писать свой костыль на каждый чих, потому что лень разбираться с чем-то новым.
Мне не лень разбираться, я как раз разобрался и мне не понравилось. Я не на каждый чих это делаю, а только на ансибл и терраформ, докер я не трогал, например, в графану просто влюбился
>самописный костыль
Тебя поимели, и ты пытаешься сделать это со мной. Всё на свете является самописным костылём. Просто тебя убедили, что один костыль лучше другого
>Ты подумай на один шаг вперед хотя бы. Понадобится тебе новый функционал - будешь свое говно рефакторить три дня к ряду
ПодумОл. Как раз таки в моём случае я могу своё говно рефакторить, а в случает терраформа я буду ждать, когда дяденька напишет код. Терраформ убогое говно нерасширяемое. Мой код расширяем. Мне надо было поддержку доменов, терреформ мне этого не давал, а мой код давал. Сделал, и мне теперь хорошо. Более того, я это могу вынести в либу и подключить к другому проекте через yarn add terrafomt-ebala, а ты нет
>Блять, дочитал до
>ansible Хуета
>Ты походу совсем умом обделен
Нет. Обделены умом те, кто используют. Почему, когда я в ансибле запускау условный apt update я не вижу в реалтайме логи???????? Мне надо логи в реалтайме без всякого мусора. Это же так просто. Уже на этом моменте становится понятно, что писал аутист. Потом я посмотрел, на чём это написано и как - петухон через жопу, который вызывает тот же самый баш, и успокоился. Потом какие-то миллион параметров, миллион флагов, а если флаг не завезли - соси хуй. В итоге всё превращается в башсибл, спрашивается, ну и зачем мне это говно? Только потому, что оно умеет в цикле по хостам ходить, ну охуеть, я это сделал за 5 минут
>С таким подходом тебе и кубер не нужен
НужОн. Я хочу контейнеры крутить, чтобы мой криптостартап, когда у него будет 1ккк пользователей быстро с одной ноды на 1000, так, хоба, и перекатился. А если серьёзно, то я просто захотел разобраться, чтобы не быть лохом и внедрить в свои микропроекты кубер. Сейчас на docker compose всё. Судя по описанию, куб умеет всё тоже, что и докер, только нормально с API, дашбордами, скейлингом и кучей тулзов. Полистал доку, потыкал ссылки и нихуя не понял с какой стороны к нему подступиться, чтобы не читать ахулиард страниц, которые также ссылаются на ахулиардж страниц, даже ни разу не запустив кластер
>>325458
Во-первых, нет никакой тьюринг-полноты, хватит этого уродливого пидора и его шизотеории пиарить. Я понимаю, ЛГБТ - это в некоторых местах планеты модно, но это же двач, тут только серьёзные и успешные люди. Во-вторых, чем гибче будет инструмент, тем больше возможностей. Гибкий инструмент может и в тупое и в умное, негибкий только в первое. Спрашивается, зачем себя ограничивать? Делать говно из-за того, что некоторые макаки не смогли осилить инструмент. Хм, а может, делают говно не по этому, а потому, что не умеют делать норм, а девопсы и так скушают
>от sql у тебя жопа не горит
Горит. У тебя правильная асоциация. SQL такое же говно. У меня действительно горела раньше с него жопа. Только я в отличие от вас, вместо того, чтобы винить себя, что я какой-то не такой, что-то не осилил, что-то не понял, просто прямо говорю, что это убогое говно, которое вмето языка предлагает плохочитаемый синтаксис
Это такой 1С прошлого, видимо, рассчитанный на бухгатлеров@экономистов, но пользуются в итоге анальники.
>Не, пусть ваши пятые точки слегка нагреются
Кек, пока я вижу только подрыв маньки-быдлокодера, которая не может осилить нихуя.
Как решить конкретную задачу с неймингом я тебе подсказал. Есть еще конкретные вопросы - пиши, твои сопли и обвинения всех вокруг тут никому не интересны.
Алсо, ты слабоумный не потому что ансибл не используешь, а потому что не отличаешь декларативный и императивный подходы, не знаешь, что такое идемпотентность и не вник в тему даже на 1%.
В нормальной компании ты бы получил подзатыльник и лишился допуска к инфраструктуре, если бы кто-то твои баш-портянки увидел. Остается только фантазировать про криптостартап сидя у мамки на шее.
>SQL такое же говно.
От регулярок, подозреваю, тоже разрыв? Предпочитаешь нарезать строки руками и писать свою логику?
> Джуны девпопс еще актуальны?
С одной стороны напрашивается очевидный ответ, что нет, никогда нужны не были. С другой знаю, что часто в девопс и СРЕ гребут всех подряд (я сам так попал, чего уж греха таить). Так что лучше ориентируйся на то, интересно тебе это или нет. Если есть хоть какой-то айтишный бэкграунд, не с нуля вкатиться вполне реально.
>Какой стек и навыки нужны?
Администрирование линукса, баш, сети, докер, ci/cd, мониторинг, кубер, архитектура приложений, безопасность. Часто могут требоваться знания баз данных, облаков, какого-либо языка программирования (обычно go, python).
Знать и уметь нужно много всего, короче.
>баш
Всегда пишу скрипты на чистом posix шелле после пары случаев ебли со всякими бизибоксами, билдрутами и прочими openwrt. Там будут спрашивать чтобы я понимал ${foo[@]} vs ${foo[*]} и [[ ]] =~?
>обычно go
Нахуя это сисадмину?
>я вижу только подрыв маньки-быдлокодера
А свой обсёр с циклами видишь?
>Как решить конкретную задачу с неймингом я тебе подсказал.
Показал говно
>слабоумный не потому что ансибл не используешь, а потому что не отличаешь декларативный и императивный подходы
Нет. Тебя опять наебали, и ты опять пытаешься сделать это со мной. Я же тебе сообщил уже, что вижу твои приколы
Нет никакого декларативного подхода. Как и нет императивщины. Процессор тупая штука, которая последовательно исполняет инструкции. Асм создан, чтобы упростить чтение этих инструкций. Язык C существует, чтобы автоматизировать генерацию этих инструкций. C++ тоже. Всё программирования существует для того, чтобы автоматизиовать генерацию последовательно исполняемых инструкции. И те yaml конфики, которые ты, как мартышка создаёшь, также парсятся и исполняются последовательно. Императивно, если тебе так понятнее, хотя, повторюсь, никакой императивщины нет, это шизотермин. И разница в написании кода конфига, в зависимости от которого будут исполняться инструкции, и написании этих инструкций напрямую в том, что в первом случае ты не контролируешь процесс - программа как-то сама делает всё, а во втором ты можешь контролировать процесс, прервав его на середине, например, или модицицировав - в общем использовав всю мощь програмирования
Есть конкретнее, то ты можешь написать в yaml `kek: pek`, а можешь в js { kek: pek }. Во-втором случае ты можешь pek сгенерировать автоматически, вынести часть конфига в переменную или создать библиотеку, а в первом нет
>В нормальной компании ты бы получил подзатыльник и лишился допуска к инфраструктуре, если бы кто-то твои баш-портянки увидел
Ты просто лоускил макака, распространяющая наёб, которой сказали в туториалах по ансиблу, что баш - плоха. Только, вот, все линупсы работают на баше. initd, ebuild, установочные скрипты программ - это всё баш. И даже тот же Ansible, внезапно, ты видимо за неумением кодить не читал исходники, а я читал, и сообщаю тебе, тоже использует во всю баш наворачивая вокруг кучу дрисни. Вот, чекни тот же git или apt module https://github.com/ansible/ansible/blob/95e3af3e0f6a054988591913a46c95b6aff94cb5/lib/ansible/modules/git.py#L970
https://github.com/ansible/ansible/blob/95e3af3e0f6a054988591913a46c95b6aff94cb5/lib/ansible/modules/apt.py
То есть ты буквально используешь вместо 500 строк на баше, 10к строк дрисни вокруг того же баша
>>325983
Регулярки норм. У вас как-то очень плохо с пониманием того, что говно, а что нет. Человечество давно уже изобрело языки программирования, которые позволяют выражать свою мысль. Когда берётся новый инструмент, хочется, чтобы он давал новые возможности не отбирая старые. Регулярки дают мне возможность лаконично описать то, что я хочу найти в тексте, при этом они не отбирают у меня возможности в цикле парсить строку. Регулярки - хорошие. SQL - говно потому, что он даёт возмодность взаимодействовать с базой, но лишает меня удобства синтаксиса привычных языков
Если тян трахается - хорошо. Ебёт мозги - плохо. Если трахается и ебёт мозги - тоже плохо
Ладно, пойду читать доку кубера. Пиздец, конечно, она непоследовательная
>я вижу только подрыв маньки-быдлокодера
А свой обсёр с циклами видишь?
>Как решить конкретную задачу с неймингом я тебе подсказал.
Показал говно
>слабоумный не потому что ансибл не используешь, а потому что не отличаешь декларативный и императивный подходы
Нет. Тебя опять наебали, и ты опять пытаешься сделать это со мной. Я же тебе сообщил уже, что вижу твои приколы
Нет никакого декларативного подхода. Как и нет императивщины. Процессор тупая штука, которая последовательно исполняет инструкции. Асм создан, чтобы упростить чтение этих инструкций. Язык C существует, чтобы автоматизировать генерацию этих инструкций. C++ тоже. Всё программирования существует для того, чтобы автоматизиовать генерацию последовательно исполняемых инструкции. И те yaml конфики, которые ты, как мартышка создаёшь, также парсятся и исполняются последовательно. Императивно, если тебе так понятнее, хотя, повторюсь, никакой императивщины нет, это шизотермин. И разница в написании кода конфига, в зависимости от которого будут исполняться инструкции, и написании этих инструкций напрямую в том, что в первом случае ты не контролируешь процесс - программа как-то сама делает всё, а во втором ты можешь контролировать процесс, прервав его на середине, например, или модицицировав - в общем использовав всю мощь програмирования
Есть конкретнее, то ты можешь написать в yaml `kek: pek`, а можешь в js { kek: pek }. Во-втором случае ты можешь pek сгенерировать автоматически, вынести часть конфига в переменную или создать библиотеку, а в первом нет
>В нормальной компании ты бы получил подзатыльник и лишился допуска к инфраструктуре, если бы кто-то твои баш-портянки увидел
Ты просто лоускил макака, распространяющая наёб, которой сказали в туториалах по ансиблу, что баш - плоха. Только, вот, все линупсы работают на баше. initd, ebuild, установочные скрипты программ - это всё баш. И даже тот же Ansible, внезапно, ты видимо за неумением кодить не читал исходники, а я читал, и сообщаю тебе, тоже использует во всю баш наворачивая вокруг кучу дрисни. Вот, чекни тот же git или apt module https://github.com/ansible/ansible/blob/95e3af3e0f6a054988591913a46c95b6aff94cb5/lib/ansible/modules/git.py#L970
https://github.com/ansible/ansible/blob/95e3af3e0f6a054988591913a46c95b6aff94cb5/lib/ansible/modules/apt.py
То есть ты буквально используешь вместо 500 строк на баше, 10к строк дрисни вокруг того же баша
>>325983
Регулярки норм. У вас как-то очень плохо с пониманием того, что говно, а что нет. Человечество давно уже изобрело языки программирования, которые позволяют выражать свою мысль. Когда берётся новый инструмент, хочется, чтобы он давал новые возможности не отбирая старые. Регулярки дают мне возможность лаконично описать то, что я хочу найти в тексте, при этом они не отбирают у меня возможности в цикле парсить строку. Регулярки - хорошие. SQL - говно потому, что он даёт возмодность взаимодействовать с базой, но лишает меня удобства синтаксиса привычных языков
Если тян трахается - хорошо. Ебёт мозги - плохо. Если трахается и ебёт мозги - тоже плохо
Ладно, пойду читать доку кубера. Пиздец, конечно, она непоследовательная
>Нахуя это сисадмину?
Всё чаще пишу скрипты на го, чтобы не тащить ебанутые питоночьи зависимости типа ямла, бото или там реквеста сраного.
И сколько бинари такие весят? Меньше 50Мб хоть?
>Нахуя это сисадмину?
Это все зависит от вакансии и конторы. Если от тебя не требуется ничего, кроме работы с инфраструктурой, то и не нужно.
Если всей конторой пишут на go, ты близок к разработке, есть самописные операторы куба на go или другие девопс-инструменты, то уж извольте.
Недавно мне знакомый вакансию скидывал, там вообще одна сплошная работа с данными, airflow и прочее, датаопс какой-то получается уже.
попроси пожалуйста chatgpt объяснить тебе "why DSL is so cool?"
Можешь просто почитать https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8
Это не база, это здравый смысл
Обосрался и пошёл кидать ссылки. Как это знакомо. DSL - это всегда немощность и попытка захвата рынка через высокий порог входа. Потому, что если ты делаешь то продкт, тебе не надо лочить разрабов на свою технологию, а если ты делаешь говно, осзнавая это ты изобретаешь свой язык, чтобы разрабочикам, которые его выучили, сложнее было отказаться от своих времнных вложений. Язык под задачу не наёт никаких преимуществ. В статье пиздёжь. Опять, наебали тебя, а ты пытаешься сделать это со мной. Как сектан, которые тащит всех в свою секту
>девопсики помогите пожалуйста
>ответь пожалуйста вот на это
A Few moments later
>РЯЯЯЯЯЯЯЯЯ ДАЛБАЕБЪЫ СУКА ВЫ НИХУЯ НЕ ЗНАЕТЕ И НЕ УМЕЕТЕ
>ВАС ОБМАНЫВАЮТ А ВЫ ВЕДЕТЕСЬ СУУУУУКИИИИ
>ВЫ НЕ ЗНАЕТЕ ЧТО ГХАВНО А ЧТО НЕТ, ЩА РАССКАЖУ
Пиздец долбаеб конечно, пришла какая то хуйня формоебчик донный чисто, вопрошает и еще сука умничает, то ему не так, это не так, тут наебали, тут наебали. Накидал линки, потом
>обосрался и пошел кидать ссылки
Ну и слети отсюда мошка кодерская, сиди пердоль на своем дыркоскрипте костыли, хуль приперся то?