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

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

Відкрити в Telegram

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

Показати більше

📈 Аналітичний огляд Telegram-каналу Библиотека девопса | DevOps, SRE, Sysadmin

Канал Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 10 431 підписників, посідаючи 11 852 місце в категорії Технології та додатки та 62 915 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 10 431 підписників.

За останніми даними від 10 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 0, а за останні 24 години на 0, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 8.49%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.65% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 886 переглядів. Протягом першої доби публікація в середньому набирає 589 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 4.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як devops'a, навигация, скрипт, docker, git.

📝 Опис та контентна політика

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

Завдяки високій частоті оновлень (останні дані отримано 11 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

10 431
Підписники
Немає даних24 години
+87 днів
Немає даних30 день
Архів дописів
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека 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 #пульс_индустрии