DevOps на минималках
2.78K subscribers
120 photos
67 videos
99 links
Все самое полезное для девопсера в одном канале.

1. Библиотека книг и статей по теме DevOps.
2. Задачи и тесты по DevOps для тренировки и обучения.
3. Вопросы с собеседований по DevOps и ответы на них.

по рекламе: @jannytg
Download Telegram
🔥 Открытый практикум по Claude Code без теории

Ты слышал, что Claude Code — один из лучших инструментов вайб-кодинга в мире. Зашёл попробовать — а там оплата картой, которая из России не проходит. Ограничения, виртуалки, чужие аккаунты, и фоновый страх, что завтра всё отвалится.

CEO университета Зерокодер, Кирилл Пшинник, проведет открытый практикум. Что вы узнаете:

— Доступ к Claude Code из России — как установить, оплатить и настроить. Без блокировок — рабочая схема 2026 года;
— 15 ИИ-агентов одновременно — прямая демонстрация: как выполняются задачи, как работает переключение, контекст проекта;
— Сайт с нуля за 15 минут — прямо на практикуме, от пустой папки до готовой страницы;
— Дашборд и обработка таблиц — аналитика на чистом коде, без сторонних сервисов.

И самое главное – расскажем как получить Claude Code бесплатно.

🎁 Бонус всем участникам: набор лучших навыков для Claude Code, чтобы вы сразу начали работать, без задержек и ограничений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
👩‍💻 Наглядно: Как работает Docker

👉 DevOps на минималках
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳4👍2
Claude Code за месяц стал мощнее. Большинство использует его на 10%

Как превратить Claude Code не в помощника для кода, а в автономного агента?
Чтобы он сам анализировал проект, писал код, запускал тесты, исправлял ошибки и одновременно вел до 15 задач. То, с чем обычно справляется целая команда разработки.

CEO университета Зерокодер Кирилл Пшинник проводит открытый практикум. Собираем вживую:

– 15 агентов одновременно – как распределять задачи и держать контекст проекта;
– Проект с нуля за 15 минут – от пустой папки до готовой страницы на эфире;
– Дашборд и аналитика таблиц – на чистом коде, без сторонних сервисов;
– Доступ из России – рабочая схема оплаты и установки 2026, если ещё не подключили.

И самое главное – расскажем, как получить Claude Code бесплатно.
🎁 Бонус всем участникам: набор лучших навыков для Claude Code, чтобы сразу начать работать без задержек и ограничений.

Регистрация на бесплатное занятие по ссылке.
👎1
This media is not supported in your browser
VIEW IN TELEGRAM
но двери уже закрыты и тебя вышвырнули на улицу в самый кризис
🤣8💔4
kube-prometheus — готовая база для мониторинга Kubernetes!

В этом репозитории собран полноценный monitoring stack для Kubernetes: Prometheus Operator, Prometheus, Alertmanager, Grafana, node-exporter, kube-state-metrics, готовые dashboards и alert rules. Хороший вариант, чтобы посмотреть, как в реальности собирают наблюдаемость кластера не из одного контейнера, а из набора Kubernetes-манифестов и связанных компонентов.

Оставляю ссылочку: GitHub
❤1👍1
Знали, как не дать cron-задаче запуститься второй раз поверх первой?

Иногда скрипт запускается по расписанию, но предыдущий запуск ещё не закончился. Например, backup, импорт данных, rsync или очистка логов могут выполняться дольше обычного.

Обычный cron выглядит так:
* * * * * /opt/jobs/backup.sh


Если backup занимает больше минуты, следующий запуск начнётся параллельно:
backup.sh
backup.sh
backup.sh


Это может привести к битым архивам, двойной нагрузке, конфликтам файлов и странным ошибкам.

Для таких случаев используют flock:
flock -n /tmp/backup.lock /opt/jobs/backup.sh


Файл /tmp/backup.lock здесь не хранит данные. Он нужен как точка блокировки.

Ключ -n означает: если lock уже занят, не ждать, а сразу выйти:
flock -n /tmp/backup.lock ./backup.sh


В cron это можно записать так:
* * * * * flock -n /tmp/backup.lock /opt/jobs/backup.sh


Если первый запуск ещё работает, второй просто не стартует.

Для более явного варианта можно использовать shell:
flock -n /tmp/backup.lock \
bash -c 'echo start; ./backup.sh'


А если нужно немного подождать lock, есть timeout:
flock -w 10 /tmp/backup.lock ./backup.sh


Так команда подождёт до 10 секунд, а потом завершится, если блокировка всё ещё занята.
👍8
📂 Напоминалка по организации безопасного отката релизов!

Даже после тщательного тестирования новый релиз может привести к ошибкам, деградации производительности или недоступности сервиса. Чётко выстроенный процесс отката позволяет быстро восстановить стабильную версию и минимизировать влияние инцидента на пользователей.

На картинке — 7 шагов построения процесса отката: подготовка стратегии и предыдущей версии, настройка автоматических проверок, определение триггеров для rollback, выполнение отката одной командой, проверка состояния системы после восстановления, разбор причин инцидента и улучшение процесса, а также простой пайплайн отката с чек-листом готовности.

Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Docker Docs — официальный гид по Docker, контейнерам и образам!

На сайте собраны материалы по установке Docker, первым контейнерам, Dockerfile, образам, volumes, networking, Docker Compose, registry, best practices и деплою приложений. Это хороший ресурс для тех, кто хочет не просто выучить пару команд, а нормально понять весь путь: как собрать образ, запустить контейнер, связать сервисы, сохранить данные и подготовить приложение к запуску в реальной инфраструктуре.

Оставляю ссылочку: Docker Docs
Проверяем HTTP endpoint из shell-скрипта!

Иногда нужно быстро понять, жив ли сервис: API, health endpoint, nginx location или внутренний backend.

Начнём с URL:
url="https://example.com/health"


Получим только HTTP-код:
code="$(curl -s -o /dev/null -w "%{http_code}" "$url")"


Теперь проверим диапазон:
if [ "$code" -ge 200 ] && [ "$code" -lt 300 ]; then
echo "OK: $code"
else
echo "FAIL: $code"
fi


Добавим timeout, чтобы скрипт не завис:
code="$(curl -sS --max-time 5 \
-o /dev/null -w "%{http_code}" "$url")"


Если нужен retry:
for i in 1 2 3; do
code="$(curl -s --max-time 5 -o /dev/null -w "%{http_code}" "$url")"

[ "$code" = "200" ] && break
sleep 2
done


После этого можно вернуть exit code для CI:
[ "$code" = "200" ] || exit 1


Такую проверку удобно использовать в deploy-скриптах, cron, CI/CD и простом мониторинге.
Делаем безопасный backup конфига перед изменением!

Перед правкой nginx, systemd unit, docker-compose.yml или любого важного конфига полезно сначала сохранить копию. Это занимает секунды, но сильно упрощает откат.

Зададим путь к файлу:
file="/etc/nginx/nginx.conf"


Добавим timestamp:
stamp="$(date +%Y%m%d-%H%M%S)"


Соберём имя backup-файла:
backup="${file}.${stamp}.bak"


Перед копированием проверим, что файл существует:
test -f "$file" || {
echo "Файл не найден: $file"
exit 1
}


Теперь создаём копию с сохранением прав и владельца:
sudo cp -a "$file" "$backup"


После этого можно редактировать конфиг:
sudo nano "$file"


Если это nginx, сначала проверяем конфигурацию:
sudo nginx -t


И только потом перезагружаем сервис:
sudo systemctl reload nginx


Если что-то пошло не так, откат простой:
sudo cp -a "$backup" "$file"
sudo systemctl reload nginx


Для удобства можно посмотреть последнюю копию:
ls -lt /etc/nginx/nginx.conf.*.bak | head


Backup перед изменением конфига это маленькая привычка, которая часто экономит часы восстановления после неудачной правки.
Сколько времени вы тратите на отчеты, которые можно собрать автоматически?

Если каждый месяц вы открываете таблицы, переносите цифры, раскладываете показатели и вручную собираете из этого отчет – эту работу уже можно отдать ИИ.

18 сентября Зерокодер покажет, как это работает на практике на первой бесплатной лаборатории вайб-кодинга.

Не будем разбирать теорию или просто показывать заранее готовый результат. Возьмем задачу с отчетом и соберем рабочий инструмент прямо в Zoom – с нуля и в реальном времени.

За 1.5 часа разберемся, как:

– забрать данные из исходной таблицы;
– автоматически распределить метрики по нужным категориям;
– собрать из них готовый отчет;
– сохранить привычный формат отчета;
– убрать лишние ручные действия и снизить количество ошибок.

Причем покажем весь процесс, а не только красивый финал: если инструмент где-то ошибется – разберемся почему и исправим это прямо на встрече.

Можно задавать вопросы по ходу и сразу понять, как применять такой подход к своим рабочим задачам.
Первое участие в Лаборатории – бесплатно.

Забрать первое участие в лаборатории бесплатно – по ссылке
Знали, зачем в Bash иногда используют exec вместо обычного запуска команды?

Обычно команду запускают так:
nginx -g 'daemon off;'


Shell остаётся родительским процессом, а nginx запускается как дочерний процесс.

В обычном терминале это почти незаметно. Но в Docker-контейнерах, entrypoint-скриптах и service-wrapper’ах это может стать проблемой: сигналы приходят в shell, а не напрямую в основной процесс.

Например, такой entrypoint выглядит рабочим:
#!/usr/bin/env bash

nginx -g 'daemon off;'


Но если контейнер останавливают через docker stop, сигнал SIGTERM сначала получает shell. Если он не передаст сигнал дочернему процессу корректно, приложение может завершаться не так, как ожидается.

Для основного процесса лучше использовать exec:
#!/usr/bin/env bash

exec nginx -g 'daemon off;'


exec не создаёт новый дочерний процесс, а заменяет текущий shell указанной командой.

То есть nginx становится главным процессом:
PID 1 -> nginx


А не так:
PID 1 -> bash -> nginx


Это особенно важно для контейнеров:
docker stop app


Теперь сигнал остановки приходит напрямую в приложение, и оно может корректно завершить работу: закрыть соединения, сбросить буферы и освободить ресурсы.

exec также полезен в скриптах-обёртках:
#!/usr/bin/env bash

export APP_ENV=prod
exec ./server


После подготовки окружения shell больше не нужен, поэтому его можно заменить настоящим процессом приложения.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Когда ты уже станешь настоящим DevOps?

Открываешь вакансию: Linux, Docker, Kubernetes, CI/CD, сети…
Закрываешь вакансию.

Полгода учишься и всё ещё не понимаешь: «А меня уже возьмут?»

Проверь это в бесплатном тесте Pigeon Careers.

За 4–5 минут узнаешь:

✅ что уже знаешь
✅ где пробелы
✅ что учить дальше
✅ сколько примерно осталось до первой работы

Можно также сравнить DevOps с аналитикой и Python.

Без покупки курса и многочасовых лекций.

Кстати, Pigeon Careers помогли устроиться 20+ ребятам за последний год. Средний оффер — 245к.

Пройти тест: @test
👏1
Настраиваем простой healthcheck для Docker-контейнера!

Контейнер может быть запущен, но приложение внутри него уже не отвечает. Поэтому одного docker ps часто недостаточно: нужен healthcheck, который будет регулярно проверять состояние сервиса.

Представим простой HTTP-сервис, который отвечает на /health:
curl -f http://localhost:8080/health


Если команда возвращает код 0, контейнер считается здоровым. Если команда падает несколько раз подряд, Docker помечает контейнер как unhealthy.

В Dockerfile можно добавить HEALTHCHECK:
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1


Параметры задают частоту проверки, максимальное время ожидания и число неудачных попыток.

Соберём образ:
docker build -t app-with-health .


Запустим контейнер:
docker run -d --name app app-with-health


Теперь статус будет виден прямо в списке контейнеров:
docker ps


В выводе можно увидеть состояние:
Up 2 minutes (healthy)


Если нужно посмотреть healthcheck подробнее, используем inspect:
docker inspect --format '{{json .State.Health}}' app


А чтобы вывести только текущий статус:
docker inspect --format '{{.State.Health.Status}}' app


Ожидаемый результат:
healthy


Healthcheck особенно полезен в связке с оркестраторами и deploy-скриптами, можно отличать “процесс запущен” от “приложение реально готово принимать запросы”.
❤2👍2
Из вашего резюме вообще понятно, что вы умеете как DevOps-инженер?

Мы разбили работу DevOps-инженера на основные категории и сделали чекер, который показывает, какие из них в вашем резюме раскрыты хорошо, частично или почти не видны.

Опыт может быть - но по резюме этого не видно.

Проверь бесплатно и без регистрации:
https://updatecv.me/devops-resume-checker

А полный анализ резюме с правками доступен на: https://updatecv.me