🛠 Доверяй, но поднимай стенд: Как системные требования ИИ врут в глаза
В ИТ есть золотое правило: «Доверяй, но проверяй». Когда Gemini с умным видом заявляет, что твоя видяха «не потянет», рука сама тянется закрыть терминал. Я решил не верить прогнозам на слово и поднял стенд.
Дано:
Обсуждали в чате локальный запуск ИИ для кодинга. Gemini выдал базу: «На 12 ГБ VRAM (RTX 4070) даже не суйся в сторону моделей 30B+. Скорость упадет до 1-2 токенов в секунду. Бери DeepSeek-Coder-V2-Lite, это потолок».
Тест в реальности (RTX 4060 8GB Laptop, Ollama, Q4_K_M, контекст до 4k):
Я пошел дальше и запустил всё на 8 ГБ VRAM. По логике «экспертов», мой ноут должен был превратиться в тыкву.
📊 Результаты бенчмарка:
Qwen3:30b-a3b (архитектура MoE)
Прогноз Gemini: 1-2 tok/s.
Реальность: 27-32 tok/s! 🚀
Почему так? Общий вес модели (~18 ГБ) перестал быть главным ограничителем. В архитектуре MoE (Mixture of Experts) на каждый токен активируется лишь малая часть параметров (в данном случае ~3B). Ollama выкинула часть весов в системную оперативку, и за счет малого числа активных параметров гибридный режим выдал отличную скорость.
Парадокс 14B Dense vs 30B MoE
Qwen2.5:14B (Dense) — полностью влезла в GPU, но выдала всего 11 tok/s.
Qwen3:30B (MoE) — в гибридном режиме выдала 27+ tok/s.
Вывод: Модель, которая в 2 раза «тяжелее» по весу, работает в 2.5 раза быстрее. Архитектура теперь важнее объема.
Битва за код: Qwen vs DeepSeek на 8 ГБ VRAM
DeepSeek-Coder-V2 (16b): 42 tok/s. Код чистый, но сухой.
Qwen2.5-Coder (7b): 53 tok/s. Дает doctests, примеры использования и шикарные комменты.
CodeLlama (7b): Рекордные 60 tok/s, но по качеству документации проигрывает Qwen.
Вывод: Для карт с 8-12 ГБ памяти Qwen2.5-Coder сейчас — самый практичный выбор.
🎯 Итоговый вердикт:
Миф: 30B на средних картах — это всегда слайд-шоу.
Факт: MoE-модели (в Q4 квантовании) — это чит-код. По качеству логики они на голову выше моделей 7B-8B и вплотную приближаются к облачным решениям прошлого поколения.
Миф: Нужно смотреть только на объем VRAM.
Факт: Нужно смотреть на тип модели (MoE vs Dense) и на то, как движок (Ollama/llama.cpp) умеет в offload.
Мораль:
Не слушайте советы облачных ИИ про локальные ИИ. Они часто экстраполируют поведение старых тяжелых моделей. На RTX 4070 (12GB) в тех же условиях можно смело ожидать 35–45 tok/s.
Хочешь знать правду? Поднимай стенд, засекай время и меряй всё руками.
#кейс #ai
В ИТ есть золотое правило: «Доверяй, но проверяй». Когда Gemini с умным видом заявляет, что твоя видяха «не потянет», рука сама тянется закрыть терминал. Я решил не верить прогнозам на слово и поднял стенд.
Дано:
Обсуждали в чате локальный запуск ИИ для кодинга. Gemini выдал базу: «На 12 ГБ VRAM (RTX 4070) даже не суйся в сторону моделей 30B+. Скорость упадет до 1-2 токенов в секунду. Бери DeepSeek-Coder-V2-Lite, это потолок».
Тест в реальности (RTX 4060 8GB Laptop, Ollama, Q4_K_M, контекст до 4k):
Я пошел дальше и запустил всё на 8 ГБ VRAM. По логике «экспертов», мой ноут должен был превратиться в тыкву.
📊 Результаты бенчмарка:
Qwen3:30b-a3b (архитектура MoE)
Прогноз Gemini: 1-2 tok/s.
Реальность: 27-32 tok/s! 🚀
Почему так? Общий вес модели (~18 ГБ) перестал быть главным ограничителем. В архитектуре MoE (Mixture of Experts) на каждый токен активируется лишь малая часть параметров (в данном случае ~3B). Ollama выкинула часть весов в системную оперативку, и за счет малого числа активных параметров гибридный режим выдал отличную скорость.
Парадокс 14B Dense vs 30B MoE
Qwen2.5:14B (Dense) — полностью влезла в GPU, но выдала всего 11 tok/s.
Qwen3:30B (MoE) — в гибридном режиме выдала 27+ tok/s.
Вывод: Модель, которая в 2 раза «тяжелее» по весу, работает в 2.5 раза быстрее. Архитектура теперь важнее объема.
Битва за код: Qwen vs DeepSeek на 8 ГБ VRAM
DeepSeek-Coder-V2 (16b): 42 tok/s. Код чистый, но сухой.
Qwen2.5-Coder (7b): 53 tok/s. Дает doctests, примеры использования и шикарные комменты.
CodeLlama (7b): Рекордные 60 tok/s, но по качеству документации проигрывает Qwen.
Вывод: Для карт с 8-12 ГБ памяти Qwen2.5-Coder сейчас — самый практичный выбор.
🎯 Итоговый вердикт:
Миф: 30B на средних картах — это всегда слайд-шоу.
Факт: MoE-модели (в Q4 квантовании) — это чит-код. По качеству логики они на голову выше моделей 7B-8B и вплотную приближаются к облачным решениям прошлого поколения.
Миф: Нужно смотреть только на объем VRAM.
Факт: Нужно смотреть на тип модели (MoE vs Dense) и на то, как движок (Ollama/llama.cpp) умеет в offload.
Мораль:
Не слушайте советы облачных ИИ про локальные ИИ. Они часто экстраполируют поведение старых тяжелых моделей. На RTX 4070 (12GB) в тех же условиях можно смело ожидать 35–45 tok/s.
Хочешь знать правду? Поднимай стенд, засекай время и меряй всё руками.
#кейс #ai
👍5❤1
Клод код кли? 403. Квен код кли? Погнали! 🚀
Пока Anthropic закручивает гайки и выдает «403 Forbidden» на CLI-инструменты для нашего региона, в солопренерстве работает правило: риск бездействия выше риска ошибки. Не тратим время на VPN-костыли, идем по пути локального импортозамещения.
Вчера товарищ жаловался, что не может пощупать Claude Code. Я решил не ждать милости от облаков и развернул Qwen Code CLI на Ubuntu. Китайцы сейчас делают очень бодро, а архитектура MoE позволяет летать даже на среднем железе.
Почему это маст-хэв для терминала:
1. Локально. Поднимаешь Ollama, тянешь qwen2.5-coder (7b — база, 30b — для серьезного дебага). Данные не покидают периметр.
2. Бесплатно. Никаких инвойсов на 85 евро и битвы с продавцами за возврат. Твое железо — твои правила.
3. Вайбкодинг. Он так же пишет код, правит конфиги и находит баги в соседних файлах, как и Клод, но делает это «лампово», прямо у тебя на ноуте.
Что пошло не так при установке (грабли):
>Node.js. Стандартная 18-я версия из репозиториев Ubuntu — мимо. Qwen требует 20+. Пришлось сносить старую и ставить через NodeSource.
>Кладбище ядер. При обновлении словил dpkg error 11 из-за битых хедеров старых ядер Linux. Пока не вычистил «хвосты» через dpkg --purge, npm отказывался ставить пакеты.
>PATH. После установки через npm -g команда qwen часто не видна. Лечится банальным символическим линком в /usr/local/bin.
Итог:
Модель qwen2.5-coder:7b на локалке выдает шикарные комменты и doctests. Это именно тот уровень автономии, который нужен, когда хочешь кодить в самолете или из-за «забора».
Наберем 5 огоньков 🔥 или лайков -> выкачу подробный пошаговый гайд с командами: как победить зависимости Node.js, починить битый dpkg и завести Qwen CLI через локальную Ollama за 5 минут.
#кейс #ai
Пока Anthropic закручивает гайки и выдает «403 Forbidden» на CLI-инструменты для нашего региона, в солопренерстве работает правило: риск бездействия выше риска ошибки. Не тратим время на VPN-костыли, идем по пути локального импортозамещения.
Вчера товарищ жаловался, что не может пощупать Claude Code. Я решил не ждать милости от облаков и развернул Qwen Code CLI на Ubuntu. Китайцы сейчас делают очень бодро, а архитектура MoE позволяет летать даже на среднем железе.
Почему это маст-хэв для терминала:
1. Локально. Поднимаешь Ollama, тянешь qwen2.5-coder (7b — база, 30b — для серьезного дебага). Данные не покидают периметр.
2. Бесплатно. Никаких инвойсов на 85 евро и битвы с продавцами за возврат. Твое железо — твои правила.
3. Вайбкодинг. Он так же пишет код, правит конфиги и находит баги в соседних файлах, как и Клод, но делает это «лампово», прямо у тебя на ноуте.
Что пошло не так при установке (грабли):
>Node.js. Стандартная 18-я версия из репозиториев Ubuntu — мимо. Qwen требует 20+. Пришлось сносить старую и ставить через NodeSource.
>Кладбище ядер. При обновлении словил dpkg error 11 из-за битых хедеров старых ядер Linux. Пока не вычистил «хвосты» через dpkg --purge, npm отказывался ставить пакеты.
>PATH. После установки через npm -g команда qwen часто не видна. Лечится банальным символическим линком в /usr/local/bin.
Итог:
Модель qwen2.5-coder:7b на локалке выдает шикарные комменты и doctests. Это именно тот уровень автономии, который нужен, когда хочешь кодить в самолете или из-за «забора».
Наберем 5 огоньков 🔥 или лайков -> выкачу подробный пошаговый гайд с командами: как победить зависимости Node.js, починить битый dpkg и завести Qwen CLI через локальную Ollama за 5 минут.
#кейс #ai
🔥14❤2
🛠 Tailscale + NoMachine: почему я выкинул RustDesk и забыл про туннели
Иногда архитектуру проверяет не pentest, а жизнь. Ситуация простая: я с ноутом в одной сети, домашняя тачка – в другой. Между ними забор, потому что я сознательно разделил «мир Академии» и «личный мир».
И вот тут начинается инженерная правда.
Сначала классическая матрёшка
Я попробовал по старинке: Tailscale → обратный SSH-туннель → TigerVNC.
Результат предсказуем: TCP-over-TCP, дикие лаги и отвал сессии при любом чихе провайдера. autossh бодро перезапускает то, что всё равно падает. Формально работает, но жить с этим нельзя.
База: Tailscale
Tailscale – это фундамент. Ноут и сервер получают свои 100.x.y.z адреса и просто оказываются в одной виртуальной локалке без проброса портов, белых IP и NAT-магии. Это сразу сняло 80% боли.
Почему я убрал RustDesk?
Он у меня крутится внутри Академии и там он логичен. Но для личной работы начались нюансы: при нестабильной сети он начинает «сыпать» картинку, а P2P-модель хороша для саппорта, но не идеальна для постоянной плотной работы.
Что изменил NoMachine (NX-протокол)
NoMachine – это не VNC. Это адаптивный видеострим, который:
1️⃣ Адаптируется к сети. Не держит TCP в истерике. Упал битрейт – картинка чуть «поплыла», но сессию не рвет.
2️⃣ Использует железо. Моя RTX 4060 на ноуте сама декодирует H.264. CPU холодный, input lag минимальный.
3️⃣ Ощущается «локальным». Скролл браузера не фризится, терминал не отстает. Ты реально забываешь, что это удалёнка.
Где теперь что живёт:
🧑🎓 Для студентов – Apache Guacamole (через браузер).
🔐 Для аудита и SSH/K8s – Teleport.
🏠 Для личных мощностей – Tailscale + NoMachine.
Каждому инструменту – своё место. Инфраструктура должна быть прозрачной, а не заставлять тебя бороться с ней.
🔧 А как вы делите доступ? Оставляете одну «дырку» для всего или сегментируете доступ под разные задачи?
#кейс #devops
Иногда архитектуру проверяет не pentest, а жизнь. Ситуация простая: я с ноутом в одной сети, домашняя тачка – в другой. Между ними забор, потому что я сознательно разделил «мир Академии» и «личный мир».
И вот тут начинается инженерная правда.
Сначала классическая матрёшка
Я попробовал по старинке: Tailscale → обратный SSH-туннель → TigerVNC.
Результат предсказуем: TCP-over-TCP, дикие лаги и отвал сессии при любом чихе провайдера. autossh бодро перезапускает то, что всё равно падает. Формально работает, но жить с этим нельзя.
База: Tailscale
Tailscale – это фундамент. Ноут и сервер получают свои 100.x.y.z адреса и просто оказываются в одной виртуальной локалке без проброса портов, белых IP и NAT-магии. Это сразу сняло 80% боли.
Почему я убрал RustDesk?
Он у меня крутится внутри Академии и там он логичен. Но для личной работы начались нюансы: при нестабильной сети он начинает «сыпать» картинку, а P2P-модель хороша для саппорта, но не идеальна для постоянной плотной работы.
Что изменил NoMachine (NX-протокол)
NoMachine – это не VNC. Это адаптивный видеострим, который:
1️⃣ Адаптируется к сети. Не держит TCP в истерике. Упал битрейт – картинка чуть «поплыла», но сессию не рвет.
2️⃣ Использует железо. Моя RTX 4060 на ноуте сама декодирует H.264. CPU холодный, input lag минимальный.
3️⃣ Ощущается «локальным». Скролл браузера не фризится, терминал не отстает. Ты реально забываешь, что это удалёнка.
Где теперь что живёт:
🧑🎓 Для студентов – Apache Guacamole (через браузер).
🔐 Для аудита и SSH/K8s – Teleport.
🏠 Для личных мощностей – Tailscale + NoMachine.
Каждому инструменту – своё место. Инфраструктура должна быть прозрачной, а не заставлять тебя бороться с ней.
🔧 А как вы делите доступ? Оставляете одну «дырку» для всего или сегментируете доступ под разные задачи?
#кейс #devops
🔥4❤1
Опрос: На какой глубине погружения в ИИ находитесь вы? 🌊
Выберите вариант, который лучше всего описывает ваш «самый продвинутый» опыт:
Выберите вариант, который лучше всего описывает ваш «самый продвинутый» опыт:
Anonymous Poll
10%
Пока только читаю про ИИ, сам кнопки не нажимал.
38%
Балуюсь бесплатными чатами (ChatGPT Free, Claude, GigaChat) для простых текстов.
13%
Плачу за подписки (Plus/Pro) $20/мес, потому что бесплатные модели уже «не тянут» мои задачи.
33%
Использую ИИ как расширение своего мозга: кодинг, архитектура, автоматизация пайплайнов.
8%
Строю свои AI-native системы (агенты, локальный инференс).
❤3
Обещанный гайд: Поднимаем Qwen Code CLI за 5 минут ⚡️
Реакции набрали быстро, как и обещал, делюсь «дорожной картой» по замене Claude Code на локальный стек. Без VPN, подписок и тормозов.
Что в итоге в статье:
🔹 MoE в деле: Разбор, почему модель 30B (MoE) на моей RTX 3090 выдает 30+ токенов и работает быстрее, чем «легкие» dense-модели.
🔹 Хак на скорость: Готовый Modelfile, который вырезает стадию «размышлений» (<think>) и экономит до 40 секунд на каждой цепочке команд.
🔹 Матрица выбора: Какую модель тянуть под твой объем VRAM (от 8ГБ до 24ГБ) и когда стоит уходить в облако.
🔹 Честный тест: Как агент сам фиксит свои ошибки форматирования (self-correction) и обходит системные ограничения через обычный bash.
Это не просто обзор, а готовый скрипт действий, чтобы к вечеру у вас в терминале жил персональный DevOps-ассистент на стероидах MoE.
🔗 Инструкция и все конфиги здесь
#миникурс #ai
Реакции набрали быстро, как и обещал, делюсь «дорожной картой» по замене Claude Code на локальный стек. Без VPN, подписок и тормозов.
Что в итоге в статье:
🔹 MoE в деле: Разбор, почему модель 30B (MoE) на моей RTX 3090 выдает 30+ токенов и работает быстрее, чем «легкие» dense-модели.
🔹 Хак на скорость: Готовый Modelfile, который вырезает стадию «размышлений» (<think>) и экономит до 40 секунд на каждой цепочке команд.
🔹 Матрица выбора: Какую модель тянуть под твой объем VRAM (от 8ГБ до 24ГБ) и когда стоит уходить в облако.
🔹 Честный тест: Как агент сам фиксит свои ошибки форматирования (self-correction) и обходит системные ограничения через обычный bash.
Это не просто обзор, а готовый скрипт действий, чтобы к вечеру у вас в терминале жил персональный DevOps-ассистент на стероидах MoE.
🔗 Инструкция и все конфиги здесь
#миникурс #ai
👍6❤1
🧠 ТРИ СУПЕРСИЛЫ ИНЖЕНЕРА: ДЕДУКЦИЯ, ИНДУКЦИЯ И АБДУКЦИЯ
Реальный кейс из обучения DevIT Academy.
Студент настраивает CI/CD. Docker-образ собирается, но push в GitLab Container Registry падает:
❌ 403 Forbidden
failed to fetch anonymous token
Три инженера решали бы эту задачу по-разному:
📐 ДЕДУКЦИЯ – знаю правило, применяю
"403 = нет прав"
→ Проверяю токен. Есть. ✓
→ Проверяю роли в проекте.
Maintainer. ✓
→ Проверяю namespace. Совпадает. ✓
→ Всё правильно... но не работает.
📊 ИНДУКЦИЯ – собираю факты, ищу паттерн
→ На одном раннере падает, на другом тоже.
→ В другом проекте тоже 403.
→ "Значит проблема глобальная? Может registry сломан?"
→ Нет, у других работает.
🔍 АБДУКЦИЯ – вижу симптом, строю гипотезу
→ "docker login проходит, а push – нет..."
→ "Что если login и push идут на РАЗНЫЕ хосты?"
Смотрим под капот:
login → registry.devitacademy.lab
push → registry.devitacademy.lab:443
Docker хранит пароль по ТОЧНОМУ имени хоста. Для него это два разных сервера. Login сохранил пароль для одного, push ищет пароль для другого. Не находит → идет как anonymous → получает 403.
✅ Убрали :443 из переменной. Заработало.
🎓 Откуда ноги растут? (Инженерная справка)
Термин абдукция ввёл Чарльз Сандерс Пирс – «отец» американской логики. Он доказал: дедукция и индукция не создают новых знаний. Пирс утверждал: Абдукция – это единственный вид логики, способный на озарение. Это когда вы видите странный результат и «догадываетесь», какое правило могло его вызвать. Это не 100% доказательство, а лучшее объяснение из имеющихся. Именно так работает мозг инженера, когда он связывает 403-ю ошибку с портом в URL.
📚 Причём тут цикл Колба?
Дэвид Колб описал, как мы учимся: Опыт → Рефлексия → Теория → Эксперимент.
Три типа мышления – это движки внутри этого цикла:
АБДУКЦИЯ на этапе рефлексии подкидывает гипотезу «почему».
ДЕДУКЦИЯ на этапе теории строит прогноз («если гипотеза верна, то в конфиге будет два ключа»).
ИНДУКЦИЯ после эксперимента превращает результат в правило.
Без абдукции цикл буксует: студент видит ошибку, но не может сформулировать «почему». Абдукция – это мост.
⚡️ Итого
Дедукция – Сила: надёжно. Слабость: нужно уже знать.
Индукция – Сила: учишься на опыте. Слабость: риск ложных корреляций.
Абдукция – Сила: работает в неизвестности. Слабость: гипотеза может быть неверной.
Джуну хватает дедукции. Мидл добавляет индукцию. Сеньор владеет абдукцией – формулирует гипотезы там, где лог молчит.
Абдукция тренируется. Каждая дебаг-сессия – это тренажёр.
📊 ОПРОС: На каком движке ты сегодня?
Ставь реакцию, которая лучше всего описывает твой подход к решению задач:
💯 — Дедукция. Читаю доку, делаю по ГОСТу.
🤔 — Индукция. Вижу знакомые грабли, ищу закономерности.
🤯 — Абдукция. Строю безумные гипотезы, когда всё горит.
👨💻 — Инженерный хаос. Некогда думать, просто копаю до победного!
Пиши в комментах самую дикую гипотезу, которая в итоге оказалась правильной 👇
#мышление #devops
Реальный кейс из обучения DevIT Academy.
Студент настраивает CI/CD. Docker-образ собирается, но push в GitLab Container Registry падает:
❌ 403 Forbidden
failed to fetch anonymous token
Три инженера решали бы эту задачу по-разному:
📐 ДЕДУКЦИЯ – знаю правило, применяю
"403 = нет прав"
→ Проверяю токен. Есть. ✓
→ Проверяю роли в проекте.
Maintainer. ✓
→ Проверяю namespace. Совпадает. ✓
→ Всё правильно... но не работает.
📊 ИНДУКЦИЯ – собираю факты, ищу паттерн
→ На одном раннере падает, на другом тоже.
→ В другом проекте тоже 403.
→ "Значит проблема глобальная? Может registry сломан?"
→ Нет, у других работает.
🔍 АБДУКЦИЯ – вижу симптом, строю гипотезу
→ "docker login проходит, а push – нет..."
→ "Что если login и push идут на РАЗНЫЕ хосты?"
Смотрим под капот:
login → registry.devitacademy.lab
push → registry.devitacademy.lab:443
Docker хранит пароль по ТОЧНОМУ имени хоста. Для него это два разных сервера. Login сохранил пароль для одного, push ищет пароль для другого. Не находит → идет как anonymous → получает 403.
✅ Убрали :443 из переменной. Заработало.
🎓 Откуда ноги растут? (Инженерная справка)
Термин абдукция ввёл Чарльз Сандерс Пирс – «отец» американской логики. Он доказал: дедукция и индукция не создают новых знаний. Пирс утверждал: Абдукция – это единственный вид логики, способный на озарение. Это когда вы видите странный результат и «догадываетесь», какое правило могло его вызвать. Это не 100% доказательство, а лучшее объяснение из имеющихся. Именно так работает мозг инженера, когда он связывает 403-ю ошибку с портом в URL.
📚 Причём тут цикл Колба?
Дэвид Колб описал, как мы учимся: Опыт → Рефлексия → Теория → Эксперимент.
Три типа мышления – это движки внутри этого цикла:
АБДУКЦИЯ на этапе рефлексии подкидывает гипотезу «почему».
ДЕДУКЦИЯ на этапе теории строит прогноз («если гипотеза верна, то в конфиге будет два ключа»).
ИНДУКЦИЯ после эксперимента превращает результат в правило.
Без абдукции цикл буксует: студент видит ошибку, но не может сформулировать «почему». Абдукция – это мост.
⚡️ Итого
Дедукция – Сила: надёжно. Слабость: нужно уже знать.
Индукция – Сила: учишься на опыте. Слабость: риск ложных корреляций.
Абдукция – Сила: работает в неизвестности. Слабость: гипотеза может быть неверной.
Джуну хватает дедукции. Мидл добавляет индукцию. Сеньор владеет абдукцией – формулирует гипотезы там, где лог молчит.
Абдукция тренируется. Каждая дебаг-сессия – это тренажёр.
📊 ОПРОС: На каком движке ты сегодня?
Ставь реакцию, которая лучше всего описывает твой подход к решению задач:
💯 — Дедукция. Читаю доку, делаю по ГОСТу.
🤔 — Индукция. Вижу знакомые грабли, ищу закономерности.
🤯 — Абдукция. Строю безумные гипотезы, когда всё горит.
👨💻 — Инженерный хаос. Некогда думать, просто копаю до победного!
Пиши в комментах самую дикую гипотезу, которая в итоге оказалась правильной 👇
#мышление #devops
👨💻6🤯2🔥1🤔1 1
🦀 Месяц на NORA: полёт нормальный
Месяц назад я полностью перевёз свои Docker-репозитории с GitLab Registry на NORA. Сейчас проект в реальной эксплуатации: на нём держится инфраструктура моей Академии (от движка LMS до внутренних сервисов и ArgoCD).
Как это работает в проде:
GitLab CI собирает образы -> использует NORA как buildx cache -> ArgoCD забирает готовые артефакты для деплоя. Нагрузка: 3 кластера, 9 нод. Если реестр ляжет, деплой встанет.
Про рекурсию:
Я собираю Нору самой же Норой. Прежде чем финальный образ улетает в паблик, он проходит через свой же инстанс как промежуточное хранилище. Такая вот петля в стиле Portal: бинарник сам себя порождает, сам же и хранит. Если в коде есть критичный баг, мой CI/CD сдохнет первым.
---
🛠 Что под капотом
Разделил функционал на то, что уже стабильно, и то, что пришлось допиливать по ходу дела.
Что работает давно (v0.1.x – v0.2.x):
Поддержка Docker, npm, Maven, PyPI, Cargo и Helm OCI.
Общий интерфейс хранилища: сделал абстракцию, чтобы прозрачно переключаться между локальным диском и S3.
Метрики Prometheus и простенькая админка.
---
Свежие правки (v0.2.25 – v0.2.27):
NORA_BODY_LIMIT_MB: вынес лимит размера слоев в конфиг (спасибо Shveik07 за фидбек).
Docker DELETE API: дописал поддержку удаления манифестов и блобов по спецификации V2.
SmartIpKeyExtractor: пофиксил Rate Limiter (v0.2.25), чтобы он не банил запросы от своей же инфры в K8s.
---
🚀 Планы и реестр
Этап v0.3 (с GC, аудитом и RBAC) по факту закрыт в ветке v0.2.x. Сейчас пилю OIDC/LDAP, потому что без нормальной авторизации в серьезный контур соваться нет смысла.
Параллельно готовлю документы для Реестра отечественного ПО.
---
Вопрос к тем, кто в теме:
Как вы ограничиваете размер Docker-образов на уровне реестра? Ставите жесткие лимиты или просто бьёте по рукам тех, кто пушит гигабайтные слои?
#кейс #rust
Месяц назад я полностью перевёз свои Docker-репозитории с GitLab Registry на NORA. Сейчас проект в реальной эксплуатации: на нём держится инфраструктура моей Академии (от движка LMS до внутренних сервисов и ArgoCD).
Как это работает в проде:
GitLab CI собирает образы -> использует NORA как buildx cache -> ArgoCD забирает готовые артефакты для деплоя. Нагрузка: 3 кластера, 9 нод. Если реестр ляжет, деплой встанет.
Про рекурсию:
Я собираю Нору самой же Норой. Прежде чем финальный образ улетает в паблик, он проходит через свой же инстанс как промежуточное хранилище. Такая вот петля в стиле Portal: бинарник сам себя порождает, сам же и хранит. Если в коде есть критичный баг, мой CI/CD сдохнет первым.
---
🛠 Что под капотом
Разделил функционал на то, что уже стабильно, и то, что пришлось допиливать по ходу дела.
Что работает давно (v0.1.x – v0.2.x):
Поддержка Docker, npm, Maven, PyPI, Cargo и Helm OCI.
Общий интерфейс хранилища: сделал абстракцию, чтобы прозрачно переключаться между локальным диском и S3.
Метрики Prometheus и простенькая админка.
---
Свежие правки (v0.2.25 – v0.2.27):
NORA_BODY_LIMIT_MB: вынес лимит размера слоев в конфиг (спасибо Shveik07 за фидбек).
Docker DELETE API: дописал поддержку удаления манифестов и блобов по спецификации V2.
SmartIpKeyExtractor: пофиксил Rate Limiter (v0.2.25), чтобы он не банил запросы от своей же инфры в K8s.
---
🚀 Планы и реестр
Этап v0.3 (с GC, аудитом и RBAC) по факту закрыт в ветке v0.2.x. Сейчас пилю OIDC/LDAP, потому что без нормальной авторизации в серьезный контур соваться нет смысла.
Параллельно готовлю документы для Реестра отечественного ПО.
---
Вопрос к тем, кто в теме:
Как вы ограничиваете размер Docker-образов на уровне реестра? Ставите жесткие лимиты или просто бьёте по рукам тех, кто пушит гигабайтные слои?
#кейс #rust
1🔥8❤1
Самописный софт работает идеально... пока его автор не уйдет в отпуск 😏
Передаю привет всем мкбешникам, которые в своё время пилили на Delphi замену Zabbix-у. Софт вышел по-настоящему «платиновым» – столько времени работодателя было вбухано в его создание, что на эти деньги можно было купить небольшой ЦОД. История максимально поучительная.
В инженерии есть старый принцип – Бритва Оккама. Если упростить: не плоди сущности без необходимости. Но когда у тебя в руках любимый ЯП и зоопарк из облаков, Proxmox и Windows, зуд «написать свое идеальное» пересиливает логику.
---
Реальность жестче:
Каждая строчка своего кода – это долг. Ты берешь его у будущего себя под огромный процент. Если дежурный админ не разберется в твоей поделке в 3 часа ночи без звонка тебе – ты создал проблему, а не решение.
Standard is the new sexy. Zabbix – скучно? Да. Ansible – банально? Возможно. Но у них есть доки, комьюнити и вменяемый бас-фактор. Инфраструктура не должна превращаться в тыкву, когда ты уезжаешь в отпуск.
---
Инженерная модель принятия решений
Чтобы не начудить, я прогоняю идеи через три фильтра:
Правило 72 часов. Пришла идея переписать HashiCorp Vault с нуля? Подожди три дня. (Вспоминаю февраль 2022-го, когда на волне импортозамещения нас так накрыло – вовремя отпустило... или нет 😏). Обычно за это время находится готовый инструмент или понимание, что задача того не стоит.
PoC с дедлайном 4 часа. Ставим готовое (тот же DeepFlow или NetBox). Не завелось за это время? Значит, либо инструмент хлам, либо ты пытаешься забить микроскопом гвоздь.
Док «для стажера». Если не можешь описать архитектуру в паре абзацев так, чтобы понял новичок – ты переусложнил.
---
Итого: Самый дорогой софт – это тот, который кажется «бесплатным», пока его пишет твой штатный инженер. Иногда лучший профессиональный навык – вовремя ударить себя по рукам и выбрать «скучное», но рабочее решение, чем плодить «платину» за чужой счет.
---
На каком уровне «велосипедостроения» находитесь вы или ваша команда? Голосуйте реакциями:
😁 Пишем скрипты-костыли, потому что «так быстрее».
🤗 Пытаемся переписать мировые стандарты, потому что «они тормозят».
😎 Используем скучный стандарт и спим по ночам.
---
В комментариях пишите про свой самый эпичный «велосипед», за который стыдно (или которым тайно гордитесь). 👇
#кейс #devops
Передаю привет всем мкбешникам, которые в своё время пилили на Delphi замену Zabbix-у. Софт вышел по-настоящему «платиновым» – столько времени работодателя было вбухано в его создание, что на эти деньги можно было купить небольшой ЦОД. История максимально поучительная.
В инженерии есть старый принцип – Бритва Оккама. Если упростить: не плоди сущности без необходимости. Но когда у тебя в руках любимый ЯП и зоопарк из облаков, Proxmox и Windows, зуд «написать свое идеальное» пересиливает логику.
---
Реальность жестче:
Каждая строчка своего кода – это долг. Ты берешь его у будущего себя под огромный процент. Если дежурный админ не разберется в твоей поделке в 3 часа ночи без звонка тебе – ты создал проблему, а не решение.
Standard is the new sexy. Zabbix – скучно? Да. Ansible – банально? Возможно. Но у них есть доки, комьюнити и вменяемый бас-фактор. Инфраструктура не должна превращаться в тыкву, когда ты уезжаешь в отпуск.
---
Инженерная модель принятия решений
Чтобы не начудить, я прогоняю идеи через три фильтра:
Правило 72 часов. Пришла идея переписать HashiCorp Vault с нуля? Подожди три дня. (Вспоминаю февраль 2022-го, когда на волне импортозамещения нас так накрыло – вовремя отпустило... или нет 😏). Обычно за это время находится готовый инструмент или понимание, что задача того не стоит.
PoC с дедлайном 4 часа. Ставим готовое (тот же DeepFlow или NetBox). Не завелось за это время? Значит, либо инструмент хлам, либо ты пытаешься забить микроскопом гвоздь.
Док «для стажера». Если не можешь описать архитектуру в паре абзацев так, чтобы понял новичок – ты переусложнил.
---
Итого: Самый дорогой софт – это тот, который кажется «бесплатным», пока его пишет твой штатный инженер. Иногда лучший профессиональный навык – вовремя ударить себя по рукам и выбрать «скучное», но рабочее решение, чем плодить «платину» за чужой счет.
---
На каком уровне «велосипедостроения» находитесь вы или ваша команда? Голосуйте реакциями:
😁 Пишем скрипты-костыли, потому что «так быстрее».
🤗 Пытаемся переписать мировые стандарты, потому что «они тормозят».
😎 Используем скучный стандарт и спим по ночам.
---
В комментариях пишите про свой самый эпичный «велосипед», за который стыдно (или которым тайно гордитесь). 👇
#кейс #devops
😁4😎2💯1🤗1
⚡️ DevOps Digest #1 | 06.03.2026
🔥 Главное:
1. Crossplane и ИИ: платформы должны предоставлять API, а не интерфейсы. Узкое место – не написание кода, а то что происходит после отправки в репозиторий: развёртывание, проверка политик, координация. ИИ-агентам нужны декларативные API и машиночитаемые правила, а не вики и ручные процессы.
🔗 https://blog.crossplane.io/crossplane-ai-the-case-for-api-first-infrastructure/
2. jailed-agents – Nix-песочница для ИИ-агентов кодинга на базе bubblewrap. Агент работает в среде «нулевого доверия» без доступа к SSH-ключам, домашнему каталогу и секретам. Актуально для всех, кто запускает ИИ-ассистентов на своей машине.
🔗 https://github.com/andersonjoseph/jailed-agents
3. Кейс: самообслуживание в наблюдаемости через OpenTelemetry. Платформенная команда встроила OTel в SDK и обслуживает 90+ внутренних команд. Политики вместо инструкций дали единый стандарт телеметрии и 4-кратный рост пропускной способности.
🔗 https://platformengineering.org/blog/self-service-observability
4. devenv 2.0 – обновлённый интерфейс к Nix для разработческих окружений. Один файл devenv.nix описывает зависимости, сервисы и переменные. Воспроизводимые среды без контейнеров, теперь с упрощённой конфигурацией.
🔗 https://devenv.sh
5. Масштабирование GitOps: от одного кластера до 50+. Практическое руководство по OCI-артефактам как хранилищу состояния, топологиям управления парком кластеров и стратегиям работы с секретами и политиками на уровне предприятия.
🔗 https://platformengineering.org/blog/how-to-scale-gitops-in-the-enterprise
🔍 Почему платформа должна говорить на языке API
Тезис Crossplane попадает в точку: ИИ-агенты уже встраиваются в инженерные процессы, но большинство платформ построены для людей – с интерфейсами, неформализованными знаниями в вики и ручной координацией между командами. Если инфраструктура не описана декларативно и не доступна программно, агент упрётся в стену. Практический вывод: убедитесь, что политики живут в коде (OPA, Kyverno), состояние описано через API (Crossplane, Terraform), а зависимости обнаруживаемы – тогда ИИ станет помощником, а не игрушкой.
🛠 Команда дня:
Показывает разницу между желаемым состоянием в файлах и фактическим в кластере – ловит расхождения до применения.
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
#дайджест #devops
🔥 Главное:
1. Crossplane и ИИ: платформы должны предоставлять API, а не интерфейсы. Узкое место – не написание кода, а то что происходит после отправки в репозиторий: развёртывание, проверка политик, координация. ИИ-агентам нужны декларативные API и машиночитаемые правила, а не вики и ручные процессы.
🔗 https://blog.crossplane.io/crossplane-ai-the-case-for-api-first-infrastructure/
2. jailed-agents – Nix-песочница для ИИ-агентов кодинга на базе bubblewrap. Агент работает в среде «нулевого доверия» без доступа к SSH-ключам, домашнему каталогу и секретам. Актуально для всех, кто запускает ИИ-ассистентов на своей машине.
🔗 https://github.com/andersonjoseph/jailed-agents
3. Кейс: самообслуживание в наблюдаемости через OpenTelemetry. Платформенная команда встроила OTel в SDK и обслуживает 90+ внутренних команд. Политики вместо инструкций дали единый стандарт телеметрии и 4-кратный рост пропускной способности.
🔗 https://platformengineering.org/blog/self-service-observability
4. devenv 2.0 – обновлённый интерфейс к Nix для разработческих окружений. Один файл devenv.nix описывает зависимости, сервисы и переменные. Воспроизводимые среды без контейнеров, теперь с упрощённой конфигурацией.
🔗 https://devenv.sh
5. Масштабирование GitOps: от одного кластера до 50+. Практическое руководство по OCI-артефактам как хранилищу состояния, топологиям управления парком кластеров и стратегиям работы с секретами и политиками на уровне предприятия.
🔗 https://platformengineering.org/blog/how-to-scale-gitops-in-the-enterprise
🔍 Почему платформа должна говорить на языке API
Тезис Crossplane попадает в точку: ИИ-агенты уже встраиваются в инженерные процессы, но большинство платформ построены для людей – с интерфейсами, неформализованными знаниями в вики и ручной координацией между командами. Если инфраструктура не описана декларативно и не доступна программно, агент упрётся в стену. Практический вывод: убедитесь, что политики живут в коде (OPA, Kyverno), состояние описано через API (Crossplane, Terraform), а зависимости обнаруживаемы – тогда ИИ станет помощником, а не игрушкой.
🛠 Команда дня:
kubectl diff -f manifests/
Показывает разницу между желаемым состоянием в файлах и фактическим в кластере – ловит расхождения до применения.
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
#дайджест #devops
The Crossplane Blog
Crossplane & AI: The Case for API-First Infrastructure
AI has accelerated coding, but the real bottleneck starts after git push. Infrastructure and operations still rely on fragmented, human workflows. To enable AI agents, platforms must be API-first and declarative, offering a consistent, machine-readable control…
❤1🔥1
🛠 CMDB в 2026: как не поехать кукухой и сделать по-взрослому
Если при слове «учет ресурсов» ты представляешь пыльный Excel или монструозный ServiceNow, где данные протухают быстрее, чем ты жмешь Enter, выдыхай. В эпоху IaC старая добрая CMDB либо сдохла, либо мутировала в нечто полезное.
Разбираем три пути, как не плодить сущности и не врать самому себе.
---
🏠 Сценарий 1: Свой «ламповый» ЦОД (Proxmox, железо, виртуалки)
Где живет правда: Git-репозиторий. Terraform/OpenTofu рулит виртуалками, Ansible – конфигами.
Что прикрутить сверху:
– Каталог сервисов в Git – просто YAML-файлы в папке /catalog. Там пишем то, что код не знает: кто «папа» сервиса (owner), какой SLA и насколько всё бахнет, если сервис приляжет (критичность).
– Netbox – золотой стандарт для физики. Стойки, кабели, IP-план и VLAN-ы. Дружит с API, так что Ansible сам заберет оттуда нужный IP.
– Карта зависимостей – собирается полуавтоматом из состояния (state) Терраформа и API Кубера. Смотреть можно через Node Graph panel в Графане или рендерить Mermaid-схемы прямо в Git.
– Контроль «левака»: Запускаем terraform plan по расписанию. Если кто-то залез руками и что-то поменял – ловим алерт в телегу (drift detection).
---
☁️ Сценарий 2: Живем в облаках (AWS, Yandex Cloud и прочие)
Где живет правда: Удаленный бэкенд Терраформа с блокировкой (для Yandex Cloud будет Object Storage + YDB/PostgreSQL или S3+DynamoDB для AWS или аналоги).
Что прикрутить сверху:
– Родные инструменты – AWS Config или YC Asset Inventory. Облако и так знает про все твои железки, не дублируй – используй.
– Backstage или Port (free tier) – витрина для разработчика. Зашел и сразу видишь: вот сервис, вот его код, вот дока.
– Политика тегов – это и есть твоя CMDB. Тегаем всё: кто владелец, какой проект и сколько денег тратим. Натравливаем OPA/Conftest на пайплайн: нет тегов – не будет тебе деплоя.
– FinOps – когда теги на месте, сразу видно, кто натыкал лишних дисков на пару косарей зелени в месяц.
---
🥗 Сценарий 3: Винегрет (Облако + Своё + Наследие)
Самый распространённый случай. Правда размазана: облако в Терраформе, конфиги в Ансибле, Кубер в Арго, а «древнее зло» – в голове у админа.
Как выжить:
– Единое окно (Backstage) – агрегатор, который ничего не меняет, но всё показывает через плагины.
– Вариант для экономных: Скрипт-собиратор, который раз в час опрашивает все API, валидирует по JSON Schema и обновляет YAML-файлы в гите. Дешево и можно грепать.
– Главное правило: В агрегаторе ничего не трогаем руками! Хочешь изменений – иди в код. Иначе через неделю у тебя будет два вранья вместо одной правды.
---
💡 Коротко: что делать, а что – нет
✅ Надо:
– Хранить бизнес-данные (кто крайний, какой SLA) рядом с кодом.
– Автоматизировать поиск ресурсов (Discovery).
– Бить по рукам в CI за отсутствие тегов ресурсов.
– Ловить расхождения (drift) через алерты.
❌ Не надо:
– Вести учет руками в Excel/ServiceNow (смерти подобно).
– Заводить отдельные записи на каждый контейнер или лямбду (бессмысленно).
– Надеяться, что «потом заполним» (не заполните).
Итого: CMDB мертва, Service Catalog жив. Source of truth – в коде, бизнес-контекст – рядом, агрегация – автоматическая.
---
👇 А как у вас?
🏠 — Своё железо, Netbox, Git-каталог
☁️ — Облако, теги решают всё
💪 — Винегрет, Backstage спасает
🤡 — Excel + «Михалыч помнит»
---
#мышление #devops
Если при слове «учет ресурсов» ты представляешь пыльный Excel или монструозный ServiceNow, где данные протухают быстрее, чем ты жмешь Enter, выдыхай. В эпоху IaC старая добрая CMDB либо сдохла, либо мутировала в нечто полезное.
Разбираем три пути, как не плодить сущности и не врать самому себе.
---
🏠 Сценарий 1: Свой «ламповый» ЦОД (Proxmox, железо, виртуалки)
Где живет правда: Git-репозиторий. Terraform/OpenTofu рулит виртуалками, Ansible – конфигами.
Что прикрутить сверху:
– Каталог сервисов в Git – просто YAML-файлы в папке /catalog. Там пишем то, что код не знает: кто «папа» сервиса (owner), какой SLA и насколько всё бахнет, если сервис приляжет (критичность).
– Netbox – золотой стандарт для физики. Стойки, кабели, IP-план и VLAN-ы. Дружит с API, так что Ansible сам заберет оттуда нужный IP.
– Карта зависимостей – собирается полуавтоматом из состояния (state) Терраформа и API Кубера. Смотреть можно через Node Graph panel в Графане или рендерить Mermaid-схемы прямо в Git.
– Контроль «левака»: Запускаем terraform plan по расписанию. Если кто-то залез руками и что-то поменял – ловим алерт в телегу (drift detection).
---
☁️ Сценарий 2: Живем в облаках (AWS, Yandex Cloud и прочие)
Где живет правда: Удаленный бэкенд Терраформа с блокировкой (для Yandex Cloud будет Object Storage + YDB/PostgreSQL или S3+DynamoDB для AWS или аналоги).
Что прикрутить сверху:
– Родные инструменты – AWS Config или YC Asset Inventory. Облако и так знает про все твои железки, не дублируй – используй.
– Backstage или Port (free tier) – витрина для разработчика. Зашел и сразу видишь: вот сервис, вот его код, вот дока.
– Политика тегов – это и есть твоя CMDB. Тегаем всё: кто владелец, какой проект и сколько денег тратим. Натравливаем OPA/Conftest на пайплайн: нет тегов – не будет тебе деплоя.
– FinOps – когда теги на месте, сразу видно, кто натыкал лишних дисков на пару косарей зелени в месяц.
---
🥗 Сценарий 3: Винегрет (Облако + Своё + Наследие)
Самый распространённый случай. Правда размазана: облако в Терраформе, конфиги в Ансибле, Кубер в Арго, а «древнее зло» – в голове у админа.
Как выжить:
– Единое окно (Backstage) – агрегатор, который ничего не меняет, но всё показывает через плагины.
– Вариант для экономных: Скрипт-собиратор, который раз в час опрашивает все API, валидирует по JSON Schema и обновляет YAML-файлы в гите. Дешево и можно грепать.
– Главное правило: В агрегаторе ничего не трогаем руками! Хочешь изменений – иди в код. Иначе через неделю у тебя будет два вранья вместо одной правды.
---
💡 Коротко: что делать, а что – нет
✅ Надо:
– Хранить бизнес-данные (кто крайний, какой SLA) рядом с кодом.
– Автоматизировать поиск ресурсов (Discovery).
– Бить по рукам в CI за отсутствие тегов ресурсов.
– Ловить расхождения (drift) через алерты.
❌ Не надо:
– Вести учет руками в Excel/ServiceNow (смерти подобно).
– Заводить отдельные записи на каждый контейнер или лямбду (бессмысленно).
– Надеяться, что «потом заполним» (не заполните).
Итого: CMDB мертва, Service Catalog жив. Source of truth – в коде, бизнес-контекст – рядом, агрегация – автоматическая.
---
👇 А как у вас?
🏠 — Своё железо, Netbox, Git-каталог
☁️ — Облако, теги решают всё
💪 — Винегрет, Backstage спасает
🤡 — Excel + «Михалыч помнит»
---
#мышление #devops
🤡4❤1 1 1 1
⚡️ DevOps Digest #2 | 10.03.2026
🔥 Главное:
1. uutils Coreutils 0.7 – GNU-утилиты на Rust – вышел новый релиз альтернативной реализации coreutils на Rust. Более 100 утилит (sort, cp, chmod, ls и др.) теперь работают кроссплатформенно, включая Windows и Fuchsia. Проект зреет и всё ближе к продакшн-применению.
opennet.ru
2. FreeBSD 14.4 – стабильный релиз – после 9 месяцев разработки вышла новая версия с образами для amd64, aarch64, riscv64 и готовыми сборками для виртуализации (QCOW2, VHD, VMDK). Актуально для тех, кто использует FreeBSD в сетевых устройствах и серверах хранения.
opennet.ru
3. Атака через npm-пакет Cline – 4000 заражённых машин – злоумышленники внедрили скрытую зависимость в package.json популярного ИИ-ассистента. Одна строчка
habr.com
4. Self-hosted дашборд для GitHub Actions – Snorlx – инструмент для централизованного мониторинга CI/CD пайплайнов с обновлениями в реальном времени по всем репозиториям. Разворачивается на своей инфраструктуре, без привязки к внешним сервисам.
https://github.com/banshee86vr/snorlx
5. Открытый сервер для мессенджера MAX и ТамТам – энтузиасты написали на Python собственную реализацию серверной части через обратный инжиниринг протокола. Поддерживает MariaDB, MySQL, SQLite. Код под лицензией BSD – интересный пример импортонезависимого подхода.
opennet.ru
🔍 Безопасность цепочки поставок – проблема не уходит
Инцидент с Cline показывает, что атака через
🛠 Команда дня:
Запрещает выполнение lifecycle-скриптов (preinstall, postinstall, prepare) при npm install.
Это снижает риск supply-chain атак, когда вредоносный пакет запускает код во время установки.
⚠️ Но многие пакеты используют postinstall, поэтому включать стоит осознанно.
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
#дайджест #devops
🔥 Главное:
1. uutils Coreutils 0.7 – GNU-утилиты на Rust – вышел новый релиз альтернативной реализации coreutils на Rust. Более 100 утилит (sort, cp, chmod, ls и др.) теперь работают кроссплатформенно, включая Windows и Fuchsia. Проект зреет и всё ближе к продакшн-применению.
opennet.ru
2. FreeBSD 14.4 – стабильный релиз – после 9 месяцев разработки вышла новая версия с образами для amd64, aarch64, riscv64 и готовыми сборками для виртуализации (QCOW2, VHD, VMDK). Актуально для тех, кто использует FreeBSD в сетевых устройствах и серверах хранения.
opennet.ru
3. Атака через npm-пакет Cline – 4000 заражённых машин – злоумышленники внедрили скрытую зависимость в package.json популярного ИИ-ассистента. Одна строчка
postinstall установила стороннего агента с полным доступом к системе. 8 часов до обнаружения.habr.com
4. Self-hosted дашборд для GitHub Actions – Snorlx – инструмент для централизованного мониторинга CI/CD пайплайнов с обновлениями в реальном времени по всем репозиториям. Разворачивается на своей инфраструктуре, без привязки к внешним сервисам.
https://github.com/banshee86vr/snorlx
5. Открытый сервер для мессенджера MAX и ТамТам – энтузиасты написали на Python собственную реализацию серверной части через обратный инжиниринг протокола. Поддерживает MariaDB, MySQL, SQLite. Код под лицензией BSD – интересный пример импортонезависимого подхода.
opennet.ru
🔍 Безопасность цепочки поставок – проблема не уходит
Инцидент с Cline показывает, что атака через
postinstall-скрипты в npm остаётся тривиальной. Ни один аудит зависимостей не спасёт, если вы автоматически обновляете пакеты без проверки diff. Практический вывод: используйте npm audit, lockfile-ы, а в CI – запрет произвольных postinstall-скриптов через .npmrc с ignore-scripts=true и явный whitelist.🛠 Команда дня:
npm config set ignore-scripts true
Запрещает выполнение lifecycle-скриптов (preinstall, postinstall, prepare) при npm install.
Это снижает риск supply-chain атак, когда вредоносный пакет запускает код во время установки.
⚠️ Но многие пакеты используют postinstall, поэтому включать стоит осознанно.
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
#дайджест #devops
www.opennet.ru
Выпуск uutils 0.7, варианта GNU Coreutils на языке Rust
Опубликован выпуск проекта uutils coreutils 0.7.0 (Rust Coreutils), развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id,…
🔥2❤1
🛠 Гадание по YAML-конфигу твоей жизни: Career Matcher v1.0
На досуге собрал тулзу, которая делает больно, но честно. Знакомьтесь – Career Matcher.
Типичная ситуация: видишь вакансию мечты в BigTech, смотришь в своё резюме, потом снова на вакансию... И такое чувство, что между вами пропасть размером в Legacy-монолит. Чтобы не гадать «возьмут – не возьмут», я запилил бесплатный анализатор.
Как это работает (без регистрации и СМС):
🔗 Линк: https://lms.devitacademy.com/career
1. Закидываешь текст своего CV.
2. Копипастишь описание вакансии.
3. Ждешь ~10 секунд (пока магия AI перемалывает скиллы).
Что на выходе (самый сок):
– Процент матча: Визуальный индикатор, насколько ты «свой» для этой позиции.
– Оценка грейда: На какой уровень реально тянет опыт (Junior/Middle/Senior).
– Зарплатная вилка: Ориентир по рынку 2026 года, чтобы не продешевить на оффере.
– Gap-анализ: Таблица навыков – что уже есть, чего не хватает и насколько это критично для нанимающего лида.
Внутри – инженерный жир (HA на минималках):
Я не просто прикрутил одну LLM-ку, а заморочился над архитектурой:
AI-Chain с фолбеком: Сначала запрос идет в жирную Llama 3.3 70B через Groq. Если Groq прилёг – переключается на Kimi K2. Если и там беда – поднимается локальный «кракен» Qwen3 14B на моей RTX 3090 (Ollama). 100% доступность, даже если внешние API решат отдохнуть.
Таксономия РФ-рынка: Знает про ~50 актуальных DevOps-скиллов, а не абстрактную воду.
Маппинг на обучение: Если тулза видит просадку по K8s или Linux, она сразу подскажет конкретную неделю курса, где этот пробел закрывается.
Почему это стоит потыкать?
1. Никакого гейтинга: Результат сразу. Логин через Telegram нужен, только если захочешь сохранить глубокую оценку в профиль.
2. Скорость: 5 коммитов от прототипа до продакшена – чистый инжиниринг без бюрократии.
3. Честность: Лимит 3 запроса в час на IP без регистрации, 10 запросов в час после регистрации.
Деплойте свои резюме сюда: https://lms.devitacademy.com/career
Если Match % меньше 40 – не расстраивайся, это просто повод обновить конфиг головы.
#карьера #ai
На досуге собрал тулзу, которая делает больно, но честно. Знакомьтесь – Career Matcher.
Типичная ситуация: видишь вакансию мечты в BigTech, смотришь в своё резюме, потом снова на вакансию... И такое чувство, что между вами пропасть размером в Legacy-монолит. Чтобы не гадать «возьмут – не возьмут», я запилил бесплатный анализатор.
Как это работает (без регистрации и СМС):
🔗 Линк: https://lms.devitacademy.com/career
1. Закидываешь текст своего CV.
2. Копипастишь описание вакансии.
3. Ждешь ~10 секунд (пока магия AI перемалывает скиллы).
Что на выходе (самый сок):
– Процент матча: Визуальный индикатор, насколько ты «свой» для этой позиции.
– Оценка грейда: На какой уровень реально тянет опыт (Junior/Middle/Senior).
– Зарплатная вилка: Ориентир по рынку 2026 года, чтобы не продешевить на оффере.
– Gap-анализ: Таблица навыков – что уже есть, чего не хватает и насколько это критично для нанимающего лида.
Внутри – инженерный жир (HA на минималках):
Я не просто прикрутил одну LLM-ку, а заморочился над архитектурой:
AI-Chain с фолбеком: Сначала запрос идет в жирную Llama 3.3 70B через Groq. Если Groq прилёг – переключается на Kimi K2. Если и там беда – поднимается локальный «кракен» Qwen3 14B на моей RTX 3090 (Ollama). 100% доступность, даже если внешние API решат отдохнуть.
Таксономия РФ-рынка: Знает про ~50 актуальных DevOps-скиллов, а не абстрактную воду.
Маппинг на обучение: Если тулза видит просадку по K8s или Linux, она сразу подскажет конкретную неделю курса, где этот пробел закрывается.
Почему это стоит потыкать?
1. Никакого гейтинга: Результат сразу. Логин через Telegram нужен, только если захочешь сохранить глубокую оценку в профиль.
2. Скорость: 5 коммитов от прототипа до продакшена – чистый инжиниринг без бюрократии.
3. Честность: Лимит 3 запроса в час на IP без регистрации, 10 запросов в час после регистрации.
Деплойте свои резюме сюда: https://lms.devitacademy.com/career
Если Match % меньше 40 – не расстраивайся, это просто повод обновить конфиг головы.
#карьера #ai
🤩3🔥1
Как захакать собес за 30 секунд: Позиция «Своего»
Вчера я выложил Career Matcher – инструмент, который честно говорит: «дружище, вот тут ты красавчик, а тут подтяни матчасть».
Сегодня идем дальше. Допустим, по хард-скиллам ты прошел. Но как сделать так, чтобы нанимающий менеджер сразу увидел в тебе человека, который уже решает их задачи, а не просто претендует на вакансию?
Есть один прием, который меняет ход всей встречи.
Называется – «Позиция трудоустроенного».
В чём механика?
Ты перестаешь быть «просителем» (кандидатом, который ждет оценки) и начинаешь вести себя как партнер, который уже вышел на работу и вникает в процессы.
Почувствуй разницу в вопросах:
– Обычный кандидат: «А какой у вас стек?», «А как вы обучаете новичков?», «Какой у вас график?» (Фокус на себе и комфорте).
– Кандидат в позиции трудоустроенного: «Когда я приступлю, с кем из команды синхронизироваться в первую неделю, чтобы быстрее закрыть горящие тикеты?», «Как мы будем измерять успех этого проекта через полгода?» (Фокус на результате и команде).
---
3 маркера, которые переключают восприятие интервьюера:
1. Местоимение «Мы» вместо «Вы»: Когда ты говоришь «Как мы будем фиксить техдолг?», интервьюер подсознательно уже видит тебя в штатном расписании. Мозгу сложнее отказать тому, кого он уже «принял».
2. Процессы вместо условий: Вопросы про приоритеты в спринте или формат ретроспективы показывают, что тебя волнует работа, а не наличие печенек в офисе.
3. Детали вместо общих фраз: Ты спрашиваешь не «что делать», а «с чего я начну, чтобы принести пользу в первый же день».
Пять «киллер-вопросов» для DevOps-собеса:
1. «Какой инцидент за последний месяц был самым болезненным? Как бы мы его расковыряли, если бы я уже был в команде?»
2. «CI/CD пайплайн – он уже "забетонирован" или у нас есть план по его перестройке?»
3. «Если я выхожу в понедельник – какая задача горит ярче всего?»
4. «Как мы балансируем между фичами и техдолгом? Выделен ли у нас бюджет времени на рефакторинг?»
5. «Мониторинг – мы уже видим всё, что нужно, или мой первый приоритет – закрыть слепые зоны?»
Сохрани себе – пригодится перед следующим созвоном.
---
Где грань между уверенностью и кринжем?
– Здоровый подход: Любознательный тон, искренний интерес к проблемам бизнеса. Ты — партнер.
– Перебор: Снисходительность и советы «как вам всё тут переделать». Ты задаешь вопросы, а не раздаешь ответы.
Итог:
Вчера – нашел точки роста.
Сегодня – знаешь, как их упаковать в оффер.
Завтра – выходишь на работу.
Проверь свои сильные стороны перед следующим собесом:
👉 lms.devitacademy.com/career
ЗЫ можно проверить функционал просто указав слева пару скилов, а в требованиях другие или схожие без лишних слов 😜.
#карьера #devops
Вчера я выложил Career Matcher – инструмент, который честно говорит: «дружище, вот тут ты красавчик, а тут подтяни матчасть».
Сегодня идем дальше. Допустим, по хард-скиллам ты прошел. Но как сделать так, чтобы нанимающий менеджер сразу увидел в тебе человека, который уже решает их задачи, а не просто претендует на вакансию?
Есть один прием, который меняет ход всей встречи.
Называется – «Позиция трудоустроенного».
В чём механика?
Ты перестаешь быть «просителем» (кандидатом, который ждет оценки) и начинаешь вести себя как партнер, который уже вышел на работу и вникает в процессы.
Почувствуй разницу в вопросах:
– Обычный кандидат: «А какой у вас стек?», «А как вы обучаете новичков?», «Какой у вас график?» (Фокус на себе и комфорте).
– Кандидат в позиции трудоустроенного: «Когда я приступлю, с кем из команды синхронизироваться в первую неделю, чтобы быстрее закрыть горящие тикеты?», «Как мы будем измерять успех этого проекта через полгода?» (Фокус на результате и команде).
---
3 маркера, которые переключают восприятие интервьюера:
1. Местоимение «Мы» вместо «Вы»: Когда ты говоришь «Как мы будем фиксить техдолг?», интервьюер подсознательно уже видит тебя в штатном расписании. Мозгу сложнее отказать тому, кого он уже «принял».
2. Процессы вместо условий: Вопросы про приоритеты в спринте или формат ретроспективы показывают, что тебя волнует работа, а не наличие печенек в офисе.
3. Детали вместо общих фраз: Ты спрашиваешь не «что делать», а «с чего я начну, чтобы принести пользу в первый же день».
Пять «киллер-вопросов» для DevOps-собеса:
1. «Какой инцидент за последний месяц был самым болезненным? Как бы мы его расковыряли, если бы я уже был в команде?»
2. «CI/CD пайплайн – он уже "забетонирован" или у нас есть план по его перестройке?»
3. «Если я выхожу в понедельник – какая задача горит ярче всего?»
4. «Как мы балансируем между фичами и техдолгом? Выделен ли у нас бюджет времени на рефакторинг?»
5. «Мониторинг – мы уже видим всё, что нужно, или мой первый приоритет – закрыть слепые зоны?»
Сохрани себе – пригодится перед следующим созвоном.
---
Где грань между уверенностью и кринжем?
– Здоровый подход: Любознательный тон, искренний интерес к проблемам бизнеса. Ты — партнер.
– Перебор: Снисходительность и советы «как вам всё тут переделать». Ты задаешь вопросы, а не раздаешь ответы.
Итог:
Вчера – нашел точки роста.
Сегодня – знаешь, как их упаковать в оффер.
Завтра – выходишь на работу.
Проверь свои сильные стороны перед следующим собесом:
👉 lms.devitacademy.com/career
#карьера #devops
🔥3
99.9% доступности – это не «почти всегда работает».
Это ~8 часов 45 минут простоя в год.
А 99.99% – уже всего 52 минуты.
На собеседованиях часто говорят:
«У нас SLA – три девятки».
Или сверху спустят KPI 99.99% для ресурса, который просит его пристрелить.
А потом не могут сказать, сколько это в минутах.
Собрал калькулятор, который считает в обе стороны:
→ вводишь процент – получаешь допустимый простой
→ вводишь простой – получаешь реальный SLA
Популярные уровни:
• 99% – 3 дня 15 часов простоя в год
• 99.9% – 8 часов 45 минут
• 99.99% – 52 минуты
• 99.999% – ~5 минут
Разница между 99.9% и 99.99% – одна девятка.
Но по архитектуре и стоимости – пропасть.
Быстрый тест для DevOps:
сколько downtime в год у 99.95% SLA?
👉 sla.devitacademy.com
#мышление #devops
Это ~8 часов 45 минут простоя в год.
А 99.99% – уже всего 52 минуты.
На собеседованиях часто говорят:
«У нас SLA – три девятки».
Или сверху спустят KPI 99.99% для ресурса, который просит его пристрелить.
А потом не могут сказать, сколько это в минутах.
Собрал калькулятор, который считает в обе стороны:
→ вводишь процент – получаешь допустимый простой
→ вводишь простой – получаешь реальный SLA
Популярные уровни:
• 99% – 3 дня 15 часов простоя в год
• 99.9% – 8 часов 45 минут
• 99.99% – 52 минуты
• 99.999% – ~5 минут
Разница между 99.9% и 99.99% – одна девятка.
Но по архитектуре и стоимости – пропасть.
Быстрый тест для DevOps:
сколько downtime в год у 99.95% SLA?
👉 sla.devitacademy.com
#мышление #devops
❤5🔥1
⚡️ DevOps Digest #3 | 13.03.2026
🔥 Главное:
1. Критическая уязвимость в OpenSSH (CVE-2026-3497) – в GSSAPI-патче, который добавляют большинство дистрибутивов, найдена ошибка с удалённой эксплуатацией до аутентификации. Один специально сформированный пакет роняет SSH-сервер. Обновляйте openssh-server немедленно.
🔗 https://www.opennet.ru/opennews/art.shtml?num=64983
2. Автоматизация ввода Linux-серверов в домен через Ansible и HashiCorp Vault – пошаговая инструкция: Vault выдаёт одноразовые учётные данные, Ansible вводит сервер в AD без хранения паролей в плейбуках. Готовый подход для команд, у которых десятки серверов и требования ИБ.
🔗 https://habr.com/ru/articles/1009604/
3. promptfoo – тестирование безопасности AI-систем с интеграцией в CI/CD – 2 000+ звёзд за неделю. Поиск уязвимостей в LLM-приложениях, проверка промптов, агентов и RAG. Поддерживает все основные модели, запускается из командной строки.
🔗 https://github.com/promptfoo/promptfoo
4. Debezium и журнал предзаписи PostgreSQL – подробный разбор механики захвата изменений данных (CDC): как Debezium подключается к WAL и транслирует изменения из базы в реальном времени. Полезно для построения событийных архитектур и репликации.
🔗 https://blog.stackademic.com/how-debezium-uses-postgresql-wal-for-change-data-capture-a365b4ec4221
5. Воспроизводимое развёртывание NixOS для 30 рабочих станций – учитель построил полностью декларативную инфраструктуру школьного класса: PXE-загрузка, локальный кеш пакетов через Harmonia, оркестрация Colmena. Всё работает без интернета на клиентах, восстановление за минуты.
🔗 https://github.com/giovantenne/nixos-lab
🔍 Дистрибутивные патчи как скрытый вектор атаки
CVE-2026-3497 примечательна тем, что уязвимость не в основном коде OpenSSH, а в патче, который дистрибутивы годами добавляют самостоятельно. Апстрим тщательно аудируется, а дистрибутивные надстройки живут без должной проверки. На этой же неделе Qualys нашла 9 уязвимостей в AppArmor (CrackArmor) – повышение привилегий до root и выход из контейнеров на Ubuntu и Debian. Практический вывод: в первую очередь обновляйте SSH и ядро, проверьте – если GSSAPI не используете, отключите.
🛠 Команда дня:
Проверяет, включена ли GSSAPI/Kerberos-аутентификация на SSH-сервере – если не используете, отключите и уменьшите поверхность атаки
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. Критическая уязвимость в OpenSSH (CVE-2026-3497) – в GSSAPI-патче, который добавляют большинство дистрибутивов, найдена ошибка с удалённой эксплуатацией до аутентификации. Один специально сформированный пакет роняет SSH-сервер. Обновляйте openssh-server немедленно.
🔗 https://www.opennet.ru/opennews/art.shtml?num=64983
2. Автоматизация ввода Linux-серверов в домен через Ansible и HashiCorp Vault – пошаговая инструкция: Vault выдаёт одноразовые учётные данные, Ansible вводит сервер в AD без хранения паролей в плейбуках. Готовый подход для команд, у которых десятки серверов и требования ИБ.
🔗 https://habr.com/ru/articles/1009604/
3. promptfoo – тестирование безопасности AI-систем с интеграцией в CI/CD – 2 000+ звёзд за неделю. Поиск уязвимостей в LLM-приложениях, проверка промптов, агентов и RAG. Поддерживает все основные модели, запускается из командной строки.
🔗 https://github.com/promptfoo/promptfoo
4. Debezium и журнал предзаписи PostgreSQL – подробный разбор механики захвата изменений данных (CDC): как Debezium подключается к WAL и транслирует изменения из базы в реальном времени. Полезно для построения событийных архитектур и репликации.
🔗 https://blog.stackademic.com/how-debezium-uses-postgresql-wal-for-change-data-capture-a365b4ec4221
5. Воспроизводимое развёртывание NixOS для 30 рабочих станций – учитель построил полностью декларативную инфраструктуру школьного класса: PXE-загрузка, локальный кеш пакетов через Harmonia, оркестрация Colmena. Всё работает без интернета на клиентах, восстановление за минуты.
🔗 https://github.com/giovantenne/nixos-lab
🔍 Дистрибутивные патчи как скрытый вектор атаки
CVE-2026-3497 примечательна тем, что уязвимость не в основном коде OpenSSH, а в патче, который дистрибутивы годами добавляют самостоятельно. Апстрим тщательно аудируется, а дистрибутивные надстройки живут без должной проверки. На этой же неделе Qualys нашла 9 уязвимостей в AppArmor (CrackArmor) – повышение привилегий до root и выход из контейнеров на Ubuntu и Debian. Практический вывод: в первую очередь обновляйте SSH и ядро, проверьте – если GSSAPI не используете, отключите.
🛠 Команда дня:
sshd -T | grep -E 'gssapi|kerberos'
Проверяет, включена ли GSSAPI/Kerberos-аутентификация на SSH-сервере – если не используете, отключите и уменьшите поверхность атаки
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
www.opennet.ru
Уязвимость в GSSAPI-патче к OpenSSH, удалённо эксплуатируемая на стадии до аутентификации
В применяемом во многих дистрибутивах Linux патче gssapi.patch, добавляющем в OpenSSH поддержку обмена ключей на базе GSSAPI, выявлена уязвимость (CVE-2026-3497), приводящая к разыменованию указателя, повреждению памяти и обходу механизма разделения привилегий…
👍3❤2🔥1
Выкатил upstream auth в NORA. Теперь один реестр проксирует приватные Docker, Maven, npm, PyPI с кредами.
Тестировал цепочку NORA → NORA (с auth) → Docker Hub. Все 4 протокола прошли.
Попутно нашел баг: UI не показывал namespaced Docker-репозитории (library/alpine).
Причина: индекс парсил путь docker/{name}manifests/, а не docker/{ns}/{name}/manifests/. Пофиксил.
Детали релиза: https://t.me/getnora/18
#кейс #rust
Тестировал цепочку NORA → NORA (с auth) → Docker Hub. Все 4 протокола прошли.
Попутно нашел баг: UI не показывал namespaced Docker-репозитории (library/alpine).
Причина: индекс парсил путь docker/{name}manifests/, а не docker/{ns}/{name}/manifests/. Пофиксил.
Детали релиза: https://t.me/getnora/18
#кейс #rust
❤2🔥2
⚡️ DevOps Digest #4 | 17.03.2026
🔥 Главное:
1. Morgan Stanley рассказали о пятилетнем пути от push-модели CI/CD к GitOps на 500+ кластерах с Flux. Дрейф конфигурации и невозможность быстро восстановить кластер без ручной координации между командами – главные причины перехода.
🔗 https://fluxcd.io/blog/2026/03/stairway-to-gitops-morgan-stanley/
2. Apache Iggy – платформа потоковой передачи сообщений на Rust под крылом Apache Foundation. Позиционируется как сверхбыстрая альтернатива для сценариев, где критична минимальная задержка – ещё один инфраструктурный проект, переписанный на Rust.
🔗 https://github.com/apache/iggy
3. Российский веб-сервер Angie получил встроенный ACME-модуль для автоматического получения и обновления TLS-сертификатов прямо из конфига – без certbot и внешних утилит.
🔗 https://habr.com/ru/articles/1010758/
4. Вышел Debian 13.4 – 111 исправлений стабильности и 67 патчей безопасности. Обновлены PostgreSQL, QEMU, Samba, OpenSSL, Zabbix и MariaDB.
🔗 https://www.opennet.ru/opennews/art.shtml?num=64992
5. Одна строка в postgresql.conf положила всю платформу, хотя никто не менял код приложения. Напоминание: конфигурация инфраструктуры требует такого же контроля изменений и тестирования, как и код.
🔗 https://blog.stackademic.com/one-line-in-postgresql-conf-took-down-our-entire-platform-nobody-changed-any-code-63605ef65924
🔍 GitOps на 500+ кластерах: уроки Morgan Stanley
Morgan Stanley пять лет переходили от push-модели к GitOps на Flux. Главная боль push-модели – дрейф: кластеры уходят от описанного состояния, а восстановление после сбоя превращается в ручную координацию между командами, часто в три часа ночи в чужом часовом поясе. Pull-модель с агентом, непрерывно сверяющим реальное состояние с Git, решает обе проблемы. Практический вывод: если у вас больше десятка кластеров и восстановление после сбоя требует ручного вмешательства – это сигнал смотреть в сторону GitOps.
🛠 Команда дня:
Последние 20 предупреждений в кластере – быстрая диагностика без дашбордов
#дайджест #kubernetes #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. Morgan Stanley рассказали о пятилетнем пути от push-модели CI/CD к GitOps на 500+ кластерах с Flux. Дрейф конфигурации и невозможность быстро восстановить кластер без ручной координации между командами – главные причины перехода.
🔗 https://fluxcd.io/blog/2026/03/stairway-to-gitops-morgan-stanley/
2. Apache Iggy – платформа потоковой передачи сообщений на Rust под крылом Apache Foundation. Позиционируется как сверхбыстрая альтернатива для сценариев, где критична минимальная задержка – ещё один инфраструктурный проект, переписанный на Rust.
🔗 https://github.com/apache/iggy
3. Российский веб-сервер Angie получил встроенный ACME-модуль для автоматического получения и обновления TLS-сертификатов прямо из конфига – без certbot и внешних утилит.
🔗 https://habr.com/ru/articles/1010758/
4. Вышел Debian 13.4 – 111 исправлений стабильности и 67 патчей безопасности. Обновлены PostgreSQL, QEMU, Samba, OpenSSL, Zabbix и MariaDB.
🔗 https://www.opennet.ru/opennews/art.shtml?num=64992
5. Одна строка в postgresql.conf положила всю платформу, хотя никто не менял код приложения. Напоминание: конфигурация инфраструктуры требует такого же контроля изменений и тестирования, как и код.
🔗 https://blog.stackademic.com/one-line-in-postgresql-conf-took-down-our-entire-platform-nobody-changed-any-code-63605ef65924
🔍 GitOps на 500+ кластерах: уроки Morgan Stanley
Morgan Stanley пять лет переходили от push-модели к GitOps на Flux. Главная боль push-модели – дрейф: кластеры уходят от описанного состояния, а восстановление после сбоя превращается в ручную координацию между командами, часто в три часа ночи в чужом часовом поясе. Pull-модель с агентом, непрерывно сверяющим реальное состояние с Git, решает обе проблемы. Практический вывод: если у вас больше десятка кластеров и восстановление после сбоя требует ручного вмешательства – это сигнал смотреть в сторону GitOps.
🛠 Команда дня:
kubectl get events -A --sort-by='.lastTimestamp' --field-selector type=Warning | tail -20
Последние 20 предупреждений в кластере – быстрая диагностика без дашбордов
#дайджест #kubernetes #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
fluxcd.io
Stairway to GitOps: Scaling Flux at Morgan Stanley
Reflecting on Morgan Stanley's journey to production GitOps with Flux, presented at FluxCon NA 2025.
🔥4❤1
Конфигурационный покер: почему твой честный Git проиграет за столом с шулерами
В override-системах верхний слой перебивает нижний. Так устроены Ansible, Bash, ArgoCD. Когда слоёв больше трёх, то система превращается в чёрный ящик, а в поде – старый конфиг.
Правило: чем ближе настройка к рантайму, тем она сильнее.
Ansible: подлая иерархия
Bash/Python: та же логика
Docker-контейнеры обожают
ArgoCD + Kustomize: когда GitOps перестает быть Git
У тебя есть
Но тут за стол садится ArgoCD со своими оверрайдами. Кто-то решил по-быстрому сменить образ через
Итог: ты коммитишь v2, Argo пишет Synced, а в кластере крутится v1. Это не баг, афича штатное поведение. Просто приоритет рантайм-оверрайда оказался «сильнее» коммита.
На практике
Override – момент, когда отказываешься от единого источника истины. Фикс за 5 секунд через(главное не выйти на самого себя 😆) .
---
А как вы боретесь с шулерами в рантайме? Голосуем:
🤣 Я сам тот ещё шулер – сам себе злобный Буратино, бахаю оверрайды и забываю.
😎 Казино закрыто – всё закручено гайками, только Git, только хардкор.
🤔 Вечный детектив – раз в неделю расследую, откуда прилетело это значение.
😜 Я просто мимо проходил – смотрю на зеленую галочку в Argo и верю в чудо.
---
#мышление #devops
В override-системах верхний слой перебивает нижний. Так устроены Ansible, Bash, ArgoCD. Когда слоёв больше трёх, то система превращается в чёрный ящик, а в поде – старый конфиг.
Правило: чем ближе настройка к рантайму, тем она сильнее.
Ansible: подлая иерархия
role/defaults – заглушки. Дальше group_vars – окружение. Но если кто-то бахнул -e "var=value" в CI-пайплайне – твои файлы в гите превращаются в тыкву.Bash/Python: та же логика
/etc/profile < ~/.bashrc < export VAR < VAR=x commandconfig.yaml < config.prod.yaml < ENV < CLI argsDocker-контейнеры обожают
env. Если в манифесте Kubernetes висит переменная окружения и она плевать хотела на твой красивый config.yaml внутри образа. А CLI-аргументы задоминируют вообще всех.ArgoCD + Kustomize: когда GitOps перестает быть Git
У тебя есть
base/ (скелет) и overlays/ (специфика кластера). Оверлей накладывается сверху, вроде всё прозрачно.Но тут за стол садится ArgoCD со своими оверрайдами. Кто-то решил по-быстрому сменить образ через
argocd app set --kustomize-image. ArgoCD создаёт невидимый слой поверх твоего Git.Итог: ты коммитишь v2, Argo пишет Synced, а в кластере крутится v1. Это не баг, а
На практике
Override – момент, когда отказываешься от единого источника истины. Фикс за 5 секунд через
env, но через месяц никто не знает откуда в проде это значение. Итоговое состояние размазано по пяти местам. Чтобы найти виноватого начинаешь полноценное расследование ---
А как вы боретесь с шулерами в рантайме? Голосуем:
🤣 Я сам тот ещё шулер – сам себе злобный Буратино, бахаю оверрайды и забываю.
😎 Казино закрыто – всё закручено гайками, только Git, только хардкор.
🤔 Вечный детектив – раз в неделю расследую, откуда прилетело это значение.
😜 Я просто мимо проходил – смотрю на зеленую галочку в Argo и верю в чудо.
---
#мышление #devops
😎4❤1🤣1
Страх и ненависть в Telegram Bot API: Я написал свой «Pusk» на рельсах, на которых строю NORA
В штате нет собственных DevOps-инженеров. Но у товарища на поддержке 50+ организаций (вещательное оборудование для кино и живых эфиров). Вся инфраструктура завязана на Zabbix + Python-ботах, которые просто слали алерты по SNMP, битрейту и температуре в Telegram.
Ситуация: На пороге полного blackout
С 10 февраля РКН подтвердил замедление Telegram (медиа уже тормозят), а полная блокировка, по данным СМИ, планируется с 1 апреля. Если мониторинг «отвалится», техподдержка ослепнет, а эфиры начнут падать без уведомлений.
Мы не могли позволить себе внедрить «энтерпрайз»:
Mattermost/Rocket.Chat: Нужны спецы по PostgreSQL и MongoDB. Никто не будет чинить кластер в 3 часа ночи.
Matrix: Избыточная сложность, требующая постоянного тюнинга.
Мое решение: Я написал свой сервер Pusk на Go. Он полностью мимикрирует под Telegram Bot API, но не требует штата админов. Проект построен на тех же рельсах и мощностях (серверы ИИ-ферм, общие раннеры), на которых я сейчас развиваю НОРУ (собственное хранилище артефактов). Это создание полностью автономной экосистемы.
Эвакуация в безопасный контур (In Progress)
Внедрение идет прямо сейчас. Миграция ботов занимает минуты — в коде каждого бота меняется всего одна строка:
base_url="https://your-pusk-server.ru"
ТТХ моего «спасательного круга»:
Бинарник 11 MB: Один файл. Закинул и работает.
Multi-tenant (SQLite per org): Изоляция данных «из коробки» и бэкап простым копированием.
Производительность: 15,000 req/s. Лимиты Telegram API (~30 msg/s) больше не парят.
Webhook Relay: Доставляет вебхуки на локальный компьютер бота за NAT без ngrok. Идеально для полевых объектов.
Надежность: 28 E2E тестов и аудит на 27 уязвимостей.
Итог: Мониторинг спасаем без рефакторинга кода и найма новых людей. Боты на Python продолжают работать, «думая», что они в Telegram, хотя на самом деле всё летит в собственный легкий бэкенд на моих рельсах.
Присоединяйся к эвакуации:
Код: github.com/getpusk/pusk
Демо с AI-ботом: getpusk.ru
Подробный разбор: devopsway.ru/posts/pusk-self-hosted-telegram-bot-api/
#кейс #devops
«У нас было два бинарника на 11 МБ, 75 SQLite-файлов, 5 петабайт ИИ-данных, пол-инфры в НОРЕ и целое множество энкодеров всех сортов и расцветок... Не то чтобы это был необходимый запас для мониторинга, но раз уж начал коллекционировать автономные сервисы, то сложно остановиться».
В штате нет собственных DevOps-инженеров. Но у товарища на поддержке 50+ организаций (вещательное оборудование для кино и живых эфиров). Вся инфраструктура завязана на Zabbix + Python-ботах, которые просто слали алерты по SNMP, битрейту и температуре в Telegram.
Ситуация: На пороге полного blackout
С 10 февраля РКН подтвердил замедление Telegram (медиа уже тормозят), а полная блокировка, по данным СМИ, планируется с 1 апреля. Если мониторинг «отвалится», техподдержка ослепнет, а эфиры начнут падать без уведомлений.
Мы не могли позволить себе внедрить «энтерпрайз»:
Mattermost/Rocket.Chat: Нужны спецы по PostgreSQL и MongoDB. Никто не будет чинить кластер в 3 часа ночи.
Matrix: Избыточная сложность, требующая постоянного тюнинга.
Мое решение: Я написал свой сервер Pusk на Go. Он полностью мимикрирует под Telegram Bot API, но не требует штата админов. Проект построен на тех же рельсах и мощностях (серверы ИИ-ферм, общие раннеры), на которых я сейчас развиваю НОРУ (собственное хранилище артефактов). Это создание полностью автономной экосистемы.
Эвакуация в безопасный контур (In Progress)
Внедрение идет прямо сейчас. Миграция ботов занимает минуты — в коде каждого бота меняется всего одна строка:
base_url="https://your-pusk-server.ru"
ТТХ моего «спасательного круга»:
Бинарник 11 MB: Один файл. Закинул и работает.
Multi-tenant (SQLite per org): Изоляция данных «из коробки» и бэкап простым копированием.
Производительность: 15,000 req/s. Лимиты Telegram API (~30 msg/s) больше не парят.
Webhook Relay: Доставляет вебхуки на локальный компьютер бота за NAT без ngrok. Идеально для полевых объектов.
Надежность: 28 E2E тестов и аудит на 27 уязвимостей.
Итог: Мониторинг спасаем без рефакторинга кода и найма новых людей. Боты на Python продолжают работать, «думая», что они в Telegram, хотя на самом деле всё летит в собственный легкий бэкенд на моих рельсах.
Присоединяйся к эвакуации:
Код: github.com/getpusk/pusk
Демо с AI-ботом: getpusk.ru
Подробный разбор: devopsway.ru/posts/pusk-self-hosted-telegram-bot-api/
#кейс #devops
🔥4
⚡️ DevOps Digest #5 | 20.03.2026
🔥 Главное:
1. systemd 260: прекращена поддержка скриптов SysV init. Также появились механизм mstack для многослойных иерархий монтирования, утилита systemd-report и интеграция systemd-networkd с ModemManager.
🔗 https://www.opennet.ru/opennews/art.shtml?num=65018
2. Crossplane v2.2: альфа-версия инспектора пайплайнов. Перехватывает запросы и ответы на каждом шаге композиции через gRPC – от отладки при разработке до аудита в продакшене.
🔗 https://blog.crossplane.io/crossplane-v2-2-more-capable-more-reliable-more-observable/
3. Почему установка Argo CD не исправила деплои. GitOps – организационное решение, а не техническое: без чёткого разделения ответственности за конфигурацию продакшена инструмент лишь обнажит существующий хаос.
🔗 https://platformengineering.org/blog/why-installing-argo-cd-didnt-fix-your-deployments
4. Атаки на цепочку поставки ПО – третье место OWASP Top Ten 2025. Ущерб за год оценивается в $60 млрд. Разбор типов угроз в открытых репозиториях и практических мер защиты.
🔗 https://habr.com/ru/companies/codescoring/articles/1011358/
5. dockur/macos – macOS в Docker-контейнере. 558 звёзд за неделю на GitHub. Позволяет запускать macOS без Apple-железа – полезно для CI/CD-сборок под iOS/macOS.
🔗 https://github.com/dockur/macos
🔍 GitOps – это не про инструмент
Установить Argo CD может каждый за 15 минут. Проблема в том, что инструмент не решает главного: кто владеет конфигурацией продакшена, кто отвечает за откат, где заканчивается зона разработки и начинается эксплуатация. Если эти границы не определены до внедрения – вы получите тот же хаос, только версионированный в Git.
🛠 Команда дня:
Покажет сервисы, сгенерированные из SysV init-скриптов – кандидаты на миграцию в нативные юнит-файлы systemd.
#дайджест #linux #kubernetes
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. systemd 260: прекращена поддержка скриптов SysV init. Также появились механизм mstack для многослойных иерархий монтирования, утилита systemd-report и интеграция systemd-networkd с ModemManager.
🔗 https://www.opennet.ru/opennews/art.shtml?num=65018
2. Crossplane v2.2: альфа-версия инспектора пайплайнов. Перехватывает запросы и ответы на каждом шаге композиции через gRPC – от отладки при разработке до аудита в продакшене.
🔗 https://blog.crossplane.io/crossplane-v2-2-more-capable-more-reliable-more-observable/
3. Почему установка Argo CD не исправила деплои. GitOps – организационное решение, а не техническое: без чёткого разделения ответственности за конфигурацию продакшена инструмент лишь обнажит существующий хаос.
🔗 https://platformengineering.org/blog/why-installing-argo-cd-didnt-fix-your-deployments
4. Атаки на цепочку поставки ПО – третье место OWASP Top Ten 2025. Ущерб за год оценивается в $60 млрд. Разбор типов угроз в открытых репозиториях и практических мер защиты.
🔗 https://habr.com/ru/companies/codescoring/articles/1011358/
5. dockur/macos – macOS в Docker-контейнере. 558 звёзд за неделю на GitHub. Позволяет запускать macOS без Apple-железа – полезно для CI/CD-сборок под iOS/macOS.
🔗 https://github.com/dockur/macos
🔍 GitOps – это не про инструмент
Установить Argo CD может каждый за 15 минут. Проблема в том, что инструмент не решает главного: кто владеет конфигурацией продакшена, кто отвечает за откат, где заканчивается зона разработки и начинается эксплуатация. Если эти границы не определены до внедрения – вы получите тот же хаос, только версионированный в Git.
🛠 Команда дня:
systemctl list-unit-files --type=service --state=generated
Покажет сервисы, сгенерированные из SysV init-скриптов – кандидаты на миграцию в нативные юнит-файлы systemd.
#дайджест #linux #kubernetes
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
The Crossplane Blog
Crossplane v2.2 — More Capable, More Reliable, More Observable
We are excited to announce that Crossplane v2.2.0 has been released and is now available for installation into your control planes.
🔥4❤1
Взлом Trivy: когда сканер безопасности сам становится угрозой
Инструменты безопасности – новый вектор атаки на цепочки поставок. Раскрыта компрометация aquasecurity/trivy-action – GitHub Action для сканирования уязвимостей в CI/CD. Второй инцидент с Trivy за месяц.
Что произошло
Злоумышленники перезаписали 75 из 76 версионных тегов. Если в workflow указана любая версия кроме @0.35.0 – вы запускаете вредоносный код. Теги в Git можно переназначить через force-push – пин по тегу это иллюзия безопасности.
Малварь срабатывает до скана, поэтому всё выглядит нормально. А в это время: дамп памяти раннера, кража SSH-ключей, учётных данных AWS/GCP/Azure и токенов Kubernetes.
Хронология
13 марта – получен доступ к репозиторию. 13–19 марта – force-push на 75 тегов, малварь невидима. 20 марта – исследователи замечают: хэши тегов не совпадают с релизами. Семь дней инфостилер работал в тысячах пайплайнов незамеченным.
Blast radius
Критический – self-hosted раннеры с персистентным стейтом и доступом к prod. Высокий – GitHub-hosted с долгоживущими AWS/K8s ключами в env. Средний – OIDC-токены с минимальными permissions. Низкий – пин по SHA. Атака не работает. Точка.
Модель «швейцарского сыра»
Атака проходит когда дырки во всех слоях совпадают. У жертв совпало всё:
Фиксация – тег вместо SHA.
Привилегии – write-all вместо read.
Изоляция – персистентные раннеры.
Секреты – долгоживущие ключи вместо OIDC.
Закрой один слой – цепочка рвётся.
Detection: как понять, что затронуты
GitHub Actions logs – сетевые вызовы к неизвестным хостам до начала скана. Self-hosted раннеры – дампы в /tmp, следы curl к внешним IP. Cloud audit logs (CloudTrail, GCP Audit) – API-вызовы с украденных ключей. Если секрет читался в workflow с trivy-action по тегу – считайте утёкшим.
Что делать
Заменить все actions с тегов на SHA-хэши. Ротировать секреты если использовали trivy-action по тегу. Прописать permissions: read-all в каждом workflow.
Пример: NORA
Open-source проект NORA (github.com/getnora-io/nora) – 30 actions в CI/CD, ни один по тегу:
# Уязвимо:
# NORA – атака не проходит:
Плюс permissions: read-all глобально, write только где необходимо. Тот же trivy-action, но атака не проходит ни на одном слое.
От кейса к политике
SHA-пины для всех actions – теги не доверяем. Allowlist на уровне организации. OIDC вместо долгоживущих ключей. Ephemeral раннеры – персистентный стейт это бомба.
Quis custodiet ipsos custodes. Сканер стал вектором. Фиксация по хэшу – не паранойя, а гигиена.
---
Как ваш CI/CD пережил бы атаку на Trivy?
😁 – У нас нет CI/CD в этих ваших интернетах
😎 – SHA-пины, permissions: read-all, OIDC, ephemeral runners.
😱 – Пиним по тегу, permissions не прописаны, секреты вечные.
💪 – Форкнули все actions к себе, собираем раннеры из исходников, threat model включает захват GitHub. Коллеги крутят пальцем у виска, но CI не ломался ни разу.
---
#кейс #devops
Инструменты безопасности – новый вектор атаки на цепочки поставок. Раскрыта компрометация aquasecurity/trivy-action – GitHub Action для сканирования уязвимостей в CI/CD. Второй инцидент с Trivy за месяц.
Что произошло
Злоумышленники перезаписали 75 из 76 версионных тегов. Если в workflow указана любая версия кроме @0.35.0 – вы запускаете вредоносный код. Теги в Git можно переназначить через force-push – пин по тегу это иллюзия безопасности.
Малварь срабатывает до скана, поэтому всё выглядит нормально. А в это время: дамп памяти раннера, кража SSH-ключей, учётных данных AWS/GCP/Azure и токенов Kubernetes.
Хронология
13 марта – получен доступ к репозиторию. 13–19 марта – force-push на 75 тегов, малварь невидима. 20 марта – исследователи замечают: хэши тегов не совпадают с релизами. Семь дней инфостилер работал в тысячах пайплайнов незамеченным.
Blast radius
Критический – self-hosted раннеры с персистентным стейтом и доступом к prod. Высокий – GitHub-hosted с долгоживущими AWS/K8s ключами в env. Средний – OIDC-токены с минимальными permissions. Низкий – пин по SHA. Атака не работает. Точка.
Модель «швейцарского сыра»
Атака проходит когда дырки во всех слоях совпадают. У жертв совпало всё:
Фиксация – тег вместо SHA.
Привилегии – write-all вместо read.
Изоляция – персистентные раннеры.
Секреты – долгоживущие ключи вместо OIDC.
Закрой один слой – цепочка рвётся.
Detection: как понять, что затронуты
GitHub Actions logs – сетевые вызовы к неизвестным хостам до начала скана. Self-hosted раннеры – дампы в /tmp, следы curl к внешним IP. Cloud audit logs (CloudTrail, GCP Audit) – API-вызовы с украденных ключей. Если секрет читался в workflow с trivy-action по тегу – считайте утёкшим.
Что делать
Заменить все actions с тегов на SHA-хэши. Ротировать секреты если использовали trivy-action по тегу. Прописать permissions: read-all в каждом workflow.
Пример: NORA
Open-source проект NORA (github.com/getnora-io/nora) – 30 actions в CI/CD, ни один по тегу:
# Уязвимо:
uses: aquasecurity/trivy-action@0.34.2
# NORA – атака не проходит:
uses: aquasecurity/trivy-action@57a97c7e... # 0.35.0
Плюс permissions: read-all глобально, write только где необходимо. Тот же trivy-action, но атака не проходит ни на одном слое.
От кейса к политике
SHA-пины для всех actions – теги не доверяем. Allowlist на уровне организации. OIDC вместо долгоживущих ключей. Ephemeral раннеры – персистентный стейт это бомба.
Quis custodiet ipsos custodes. Сканер стал вектором. Фиксация по хэшу – не паранойя, а гигиена.
---
Как ваш CI/CD пережил бы атаку на Trivy?
😁 – У нас нет CI/CD в этих ваших интернетах
😎 – SHA-пины, permissions: read-all, OIDC, ephemeral runners.
😱 – Пиним по тегу, permissions не прописаны, секреты вечные.
💪 – Форкнули все actions к себе, собираем раннеры из исходников, threat model включает захват GitHub. Коллеги крутят пальцем у виска, но CI не ломался ни разу.
---
#кейс #devops
😁2 2❤1😱1