uz
Feedback
Библиотека девопса | DevOps, SRE, Sysadmin

Библиотека девопса | DevOps, SRE, Sysadmin

Kanalga Telegram’da o‘tish

Все самое полезное для девопсера в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/25874ec4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787

Ko'proq ko'rsatish

📈 Telegram kanali Библиотека девопса | DevOps, SRE, Sysadmin analitikasi

Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 431 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 852-o'rinni va Rossiya mintaqasida 62 915-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 10 431 obunachiga ega bo‘ldi.

10 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 0 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.49% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.65% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 886 marta ko‘riladi; birinchi sutkada odatda 589 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent devops'a, навигация, скрипт, docker, git kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Все самое полезное для девопсера в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/25874ec4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787

Yuqori yangilanish chastotasi (oxirgi ma’lumot 11 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

10 431
Obunachilar
Ma'lumot yo'q24 soatlar
+87 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пятничный_деплой
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пятничный_деплой

⚙️ mysqldump через docker exec Самый простой способ сделать бэкап MySQL в Docker — запустить mysqldump прямо внутри контейнер
⚙️ mysqldump через docker exec Самый простой способ сделать бэкап MySQL в Docker — запустить mysqldump прямо внутри контейнера. Не нужно пробрасывать порты и ставить MySQL-инструменты на хост. Всё что нужно уже есть в контейнере. Базовая команда:
docker exec mysql-container mysqldump \
  -u root -p'yourpassword' \
  --single-transaction \
  --routines \
  --triggers \
  mydatabase > backup_$(date +%Y%m%d_%H%M%S).sql
Флаг --single-transaction обязателен для InnoDB. Он делает консистентный снимок без блокировки таблиц, приложение продолжает работать в штатном режиме. Флаги --routines и --triggers включают в дамп хранимые процедуры и триггеры, которые mysqldump по умолчанию пропускает. Бэкап всех баз сразу:
docker exec mysql-container mysqldump \
  -u root -p'yourpassword' \
  --single-transaction \
  --all-databases > full_backup_$(date +%Y%m%d_%H%M%S).sql
Восстановление:
docker exec -i mysql-container mysql \
  -u root -p'yourpassword' mydatabase < backup_20260403_040000.sql
Но у этого подхода есть потолок. Нет планировщика, нет сжатия, нет отправки на удалённое хранилище. Всё это придётся добавлять самостоятельно. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🌐 Облачные права для CI без долгоживущих ключей Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим
🌐 Облачные права для CI без долгоживущих ключей Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим моментом. Пайплайн должен обращаться к облаку, и нужно как-то передать ему права. Решение находится быстро, есть минимум четыре способа, пайп зеленеет, задача закрыта. Но именно здесь часто закладывается проблема, которая выстрелит позже. ➡️ Узнать ответ 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #задача_со_звёздочкой

✌🏻 У нас две новости — хорошая и плохая! Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡 Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯 Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в LangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.
Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.
Программа курса, полный состав спикеров и другие подробности 👈🏻 ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.

💡 Сканируйте образы перед деплоем Вы сделали всё правильно: многоступенчатая сборка, distroless-образ, non-root пользователь
💡 Сканируйте образы перед деплоем Вы сделали всё правильно: многоступенчатая сборка, distroless-образ, non-root пользователь, закреплённый дайджест. Образ компактный. А потом выходит CVE в библиотеке, которую подтянул базовый образ полгода назад. Сканирование образов закрывает эту дыру. Не нужен отдельный инструмент: Trivy бесплатный, быстрый и нормально вписывается в Go CI. Как запустить Одна команда и падаем на HIGH и CRITICAL уязвимостях:
trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
Для GitHub Actions:
- name: Scan image
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: myapp:latest
    exit-code: '1'
    severity: 'HIGH,CRITICAL'
Запускайте после каждой сборки. Поймаете проблему до прода, а не после звонка от безопасников или, что хуже, после инцидента. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🐳 Запускайте Docker из любой среды Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчико
🐳 Запускайте Docker из любой среды Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчиков в корпоративных средах не могли использовать Docker Desktop вообще. Крупные компании часто работают через VDI или управляемые рабочие столы с жёсткими политиками безопасности. На таких машинах Docker Desktop просто не запускался. Команды шли на компромиссы, платили за обходные решения и теряли время. Как это работает Контейнерный движок переезжает в облако Docker. Разработчик продолжает работать как раньше: тот же терминал, те же команды docker run, тот же интерфейс Docker Desktop. Единственное, что меняется это где именно работает движок. Соединение идёт через зашифрованный туннель, каждая сессия изолирована и не сохраняет данные после завершения. ➡️ Блог разработчиков 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии

MWS Cloud Platform приглашает на сеньорский митап Что обсудим: → Почему vhost-user обходит virtio-net → Когда писать свой бал
MWS Cloud Platform приглашает на сеньорский митап Что обсудим: → Почему vhost-user обходит virtio-net → Когда писать свой балансировщик вместо HAProxy → Почему нельзя выбрать один язык для платформы Поспорим на дебатах Go vs Kotlin — все желающие могут присоединиться и задавать вопросы из зала. 📅 9 апреля, 18:00 📍 Место Санкт-Петербург, Конногвардейский бульвар, 4, Mishka Bar Для кого: сеньоров-разработчиков, сетевых инженеров и архитекторов облачных платформ Сложность докладов: 8/10 Места ограничены, регистрация обязательна. 👉

🛠 Функции в bash-скриптах Если ваш скрипт перевалил за 30 строк и вы уже сами не понимаете, что происходит в середине это си
🛠 Функции в bash-скриптах Если ваш скрипт перевалил за 30 строк и вы уже сами не понимаете, что происходит в середине это сигнал разбить его на функции. Одна функция — одна задача Это не правило из учебника, это практика. Когда каждая функция делает ровно одно дело, скрипт читается сверху вниз без лишних усилий. Видите имя функции и понимаете, что она делает. Вот простой пример. Скрипт делает бэкап директории и пишет лог.
#!/bin/bash
set -euo pipefail

log() {
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}

backup_files() {
  local source_dir="$1"
  local dest_dir="$2"
  log "Backing up $source_dir to $dest_dir"
  cp -r "$source_dir" "$dest_dir"
}

# Main
backup_files "/var/www" "/backups/www"
log "Done."
Обратите внимание на local перед переменными внутри backup_files. Без local переменная source_dir существует глобально. Если где-то ещё в скрипте есть переменная с таким же именем, вы получите баг, который сложно отловить. С local переменная живёт только внутри своей функции и нигде больше. Ещё плюс это переиспользование. Функцию log можно взять и вставить в любой другой скрипт без изменений. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

💻 Локальный эмулятор AWS В марте 2026 года LocalStack Community Edition перестал быть бесплатным в полном смысле слова. Тепе
💻 Локальный эмулятор AWS В марте 2026 года LocalStack Community Edition перестал быть бесплатным в полном смысле слова. Теперь нужен токен авторизации, CI-поддержка только в платных тарифах, а обновления безопасности заморожены. Floci — это open-source замена. Без регистрации, без ограничений в CI. Запускается одной командой. Floci эмулирует больше 20 AWS-сервисов, в том числе те, которых не было в бесплатном LocalStack. S3, SQS, DynamoDB, SNS, Lambda, IAM, STS, Cognito, API Gateway v2, ElastiCache с IAM-аутентификацией, RDS (PostgreSQL и MySQL), Kinesis, KMS. Все 408 SDK-тестов проходят. Минимальный docker-compose.yml:
services:
  floci:
    image: hectorvent/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
Все сервисы доступны на http://localhost:4566. Регион и учётные данные могут быть любыми. Если вы использовали LocalStack в CI или локальной разработке и не хотите переходить на платный тариф, Floci закрывает эту потребность. ➡️ Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🪄 Главный спаситель веток в Git Git хранит историю всех перемещений HEAD в reflog. Даже если коммит удалён, то может он ещё живёт в репозитории. Запускаем:
git reflog
Увидите список всех состояний HEAD с хэшами. Находим запись до того, как всё сломалось:
abc1234 HEAD@{3}: commit: my important work
Восстанавливаем коммит Вариант 1. Вернуть ветку на нужный коммит:
git reset --hard abc1234
Вариант 2. Cоздать новую ветку из того коммита:
git checkout -b recovery-branch abc1234
Если были незакоммиченные изменения Reflog тут не поможет — git reset --hard уничтожает их без следа. Но есть варианты: • Проверьте .git/ORIG_HEAD. Иногда Git сохраняет предыдущее состояние туда • Попробуйте git fsck --lost-found —- ищет «висячие» объекты в репозитории • Если работаете в VS Code или IntelliJ, то проверьте Local History, часто спасает Git почти никогда не удаляет данные сразу. У вас есть ~30 дней, пока сборщик мусора не почистит потерянные объекты. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

⭐️ Топ-вакансий для девопсов за неделю DevOps — до 400 000 ₽, удалёнка DevOps Engineer Middle — от150 000 ₽, удалёнка DevOps-инженер — от 200 000 ₽ , удалёнка ➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs 🐸Библиотека devops'a #вакансия_недели

⚙️ Алерты о проде в MAX Шутка! Сегодня же первое апреля! 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a
⚙️ Алерты о проде в MAX Шутка! Сегодня же первое апреля! 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a

🛡 Всегда валидируйте входные данные в bash-скриптах Скрипт без проверок это скрипт, который упадёт в самый неподходящий моме
🛡 Всегда валидируйте входные данные в bash-скриптах Скрипт без проверок это скрипт, который упадёт в самый неподходящий момент с непонятной ошибкой. Или, что хуже, отработает успешно с неправильными данными. Две проверки, которые должны быть в начале любого скрипта:
#!/bin/bash
set -euo pipefail

# Проверка количества аргументов
if [[ $# -lt 1 ]]; then
  echo "Usage: $0 <filename>"
  exit 1
fi

filename="$1"

# Проверка что файл существует
if [[ ! -f "$filename" ]]; then
  echo "Error: file '$filename' not found"
  exit 1
fi
$# это количество переданных аргументов. $0 — имя самого скрипта. $1, $2 и далее это аргументы по порядку. Валидация в начале — это контракт скрипта. Либо все условия выполнены и работа начинается, либо скрипт завершается с понятным сообщением до того, как что-то пошло не так. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

🔄 SystemRescue 13.00 Обновился SystemRescue. Это загрузочный Linux-дистрибутив для восстановления систем, работы с дисками и
🔄 SystemRescue 13.00 Обновился SystemRescue. Это загрузочный Linux-дистрибутив для восстановления систем, работы с дисками и диагностики, аналог старого SystemRescueCd. Что изменилось Ядро обновлено до Linux 6.12.20 с долгосрочной поддержкой (LTS). bcachefs — инструменты и модуль ядра обновлены до версии 1.37.3. bcachefs продолжает активно развиваться, обновления важны для работы с этой файловой системой. GParted обновлён до 1.8.1 — основной GUI-инструмент для работы с разделами. HiDPI-экраны — исправлена проблема с крошечным шрифтом: теперь используется шрифт по умолчанию из ядра. Дополнительно добавлен скрипт для настройки масштаба через конфиг. Новые утилиты: yq — обработка YAML, XML и TOML из командной строки, аналог jq для структурированных форматов fatsort — сортировка файлов на FAT-разделах nss-mdns — поддержка mDNS для резолвинга .local-имён в сети iotop на Python заменён на iotop-c, это переписанная на C версия с меньшими зависимостями и более стабильной работой. Исправлен скрипт yay-prepare, который падал с ошибками при подготовке AUR-окружения. ➡️ Release notes 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии

🔫 Не автоматизация, а русская рулетка --auto-approve убирает единственную паузу, которую Terraform делает перед тем, как что-то сломать — подтверждение плана. Именно там человек видит «1 to destroy» и успевает остановиться. Без этой паузы план исполняется немедленно. Разработчик переносит ресурс из инлайн-определения в shared module. Имя ресурса меняется. Terraform видит это как «уничтожить старый, создать новый» и это корректная логика. CI-пайплайн с --auto-approve не даёт никому это увидеть до того, как база уже удалена.
# Без --auto-approve вы бы увидели это и остановились:
  ~ aws_security_group.web      # изменить — окей
  + aws_cloudwatch_alarm.cpu    # добавить — окей
  - aws_db_instance.primary     # УДАЛИТЬ — стоп

# С --auto-approve это уже исполняется, пока вы читаете телегу
Что делать вместо этого Разделить plan и apply на два шага:
# Шаг 1 — сохранить план
terraform plan -out=plan.tfplan

# Шаг 2 — проверить на деструктивные операции
terraform show -json plan.tfplan | \
  jq '[.resource_changes[]? | select(.change.actions[] == "delete")]'

# Шаг 3 — применить именно этот план, без новых сюрпризов
terraform apply plan.tfplan
Добавить prevent_destroy для критичных ресурсов:
resource "aws_db_instance" "primary" {
  # ...
  lifecycle {
    prevent_destroy = true
  }
}
Terraform упадёт с ошибкой ещё на этапе плана до того, как что-либо будет удалено. Когда --auto-approve допустим Только для эфемерной инфраструктуры: тестовые окружения, которые поднимаются и сносятся в рамках одного CI-прогона, sandbox-окружения без реальных данных. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пятничный_деплой
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пятничный_деплой

🛠 [[ ]] вместо [ ] в bash не стиль, а безопасность Одиночные скобки [ ] — это не синтаксис bash, а внешняя команда /usr/bin/[. Двойные [[ ]] — встроенная конструкция самого bash. Разница не только косметическая. Где одиночные скобки ломаются Пустая переменная без кавычек это синтаксическая ошибка:
name=""
 
# [ ] — падает с "unary operator expected"
if [ $name = "admin" ]; then
 
# [[ ]] — работает корректно
if [[ $name == "admin" ]]; then
Строка с пробелами без кавычек:
file="my file.txt"
 
# [ ] — видит два аргумента, ломается
if [ -f $file ]; then
 
# [[ ]] — обрабатывает как одно значение
if [[ -f $file ]]; then
Что умеют только [[ ]] Паттерн-матчинг без внешних утилит:
filename="access.log"
 
if [[ "$filename" == *.log ]]; then
  echo "log file"
fi
Регулярные выражения через =~:
version="2.4.1"
 
if [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  echo "valid semver"
fi
Логические операторы && и || внутри скобок:
# [ ] — нельзя, нужно выносить наружу
if [ "$a" = "x" ] && [ "$b" = "y" ]; then
 
# [[ ]] — можно внутри
if [[ "$a" == "x" && "$b" == "y" ]]; then
Одно исключение [ ] нужен для POSIX-совместимых скриптов с #!/bin/sh — там [[ ]] не работает. Если шебанг #!/bin/bash — используйте [[ ]] везде. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

🤩 Один плагин вместо пяти команд Знакомая ситуация: под падает в CrashLoopBackOff, и вы начинаете по очереди гонять kubectl
🤩 Один плагин вместо пяти команд Знакомая ситуация: под падает в CrashLoopBackOff, и вы начинаете по очереди гонять kubectl describe pod, kubectl logs --previous, kubectl get events... и пытаетесь склеить картину в голове. kubectl-crashloop делает это за вас одной командой:
kubectl crashloop payments-api-proglib -n production
Плагин объединяет в один терминальный отчёт: - Warning Events из кластера - LastTerminationState (exit code, причина, время) - Логи предыдущего контейнера (--previous) - Если предыдущих логов уже нет — фолбэк на текущие с пометкой Что ещё умеет -o json — JSON-вывод для автоматизации и incident-тулинга --tail N — количество строк логов на контейнер --limit N — максимум записей о крашах -c container — ограничить вывод одним контейнером Установка через Krew:
kubectl krew install crashloop
Базовый запуск:
kubectl crashloop payments-api-proglib
С указанием namespace:
 
kubectl crashloop payments-api-proglib -n production
Конкретный контейнер, больше логов:
kubectl-crashloop payments-api-6d9c9b77d9-x2n5k -n production -c api --tail 10
JSON-вывод для скриптов:
kubectl crashloop payments-api-6d9c9b77d9-x2n5k -n production -o json
Важный нюанс Плагин работает на уровне конкретного пода, а не деплоймента. Если хотите проверить деплоймент, то выберите один из реплика-подов вручную. Это сознательное ограничение: инструмент остаётся простым и предсказуемым. Необходимые права доступа Минимальный набор RBAC-прав в нужном namespace:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kubectl-crashloop
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["list"]
➡️ Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

📰 Подборка обновлений недели и не только Последний дайджест марта, следующий выйдет уже в апреле. — Wayland 1.25 — Обновлени
📰 Подборка обновлений недели и не только Последний дайджест марта, следующий выйдет уже в апреле. — Wayland 1.25Обновление SysVinitОбновление Ansible5 ошибок проектирования интеграции с кафкойВышел Kali Linux 2026.1 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #дайджест_недели

Ubuntu 26.04 LTS Beta уже доступна Команда Ubuntu выпустила бета-версию Ubuntu 26.04 LTS с кодовым именем Resolute Raccoon. Ф
Ubuntu 26.04 LTS Beta уже доступна Команда Ubuntu выпустила бета-версию Ubuntu 26.04 LTS с кодовым именем Resolute Raccoon. Финальный релиз запланирован на 23 апреля 2026 года. Что изменилось относительно Ubuntu 25.10: Ядро обновилось до версии 7.0, а рабочий стол GNOME до версии 50. В инструментарии разработчика: LLVM 21 стал дефолтным компилятором, Rust обновился до 1.93.1, OpenJDK до версии 25, PHP до 8.5.2 с новым pipe-оператором. В базах данных крупные апдейты: PostgreSQL 18 с новой подсистемой I/O и приростом производительности до 3× при чтении с диска, MariaDB 11.8 теперь в main с полной поддержкой. Docker 29 с экспериментальной поддержкой nftables, containerd image store теперь дефолтный для свежих установок. Съёмные носители теперь монтируются в /run/media вместо /media. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии