Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Больше📈 Аналитический обзор Telegram-канала Библиотека девопса | DevOps, SRE, Sysadmin
Канал Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 393 подписчиков, занимая 11 436 место в категории Технологии и приложения и 61 220 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 393 подписчиков.
Согласно последним данным от 26 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 7, а за последние 24 часа — 0, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 10.06%. В первые 24 часа после публикации контент обычно набирает 4.22% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 046 просмотров. В течение первых суток публикация набирает 439 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 1.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как devops'a, навигация, скрипт, docker, git.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787”
Благодаря высокой частоте обновлений (последние данные получены 27 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
- Разберем реальные кейсы стартапов и ограничения LLM. - Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества. - Ответим на ваши вопросы и разберем кейсы участников.🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы. 👉 Зарегистрироваться на вебинар
kubectl get pods -o wide выдаёт слишком много данных, которые в этот момент не нужны.
Для таких случаев есть флаг -o custom-columns. Он позволяет выбрать только те поля, которые важны прямо сейчас.
Чтобы получить таблицу с именем пода и образом контейнера, достаточно одной команды:
kubectl get pods -o custom-columns='NAME:.metadata.name,IMAGE:.spec.containers[*].image'
Результат — чистая таблица без лишнего. [*] в пути означает, что команда учитывает все контейнеры в поде, включая сайдкары.
Формат колонки строится по простому правилу: сначала заголовок, потом путь к полю в JSON-структуре объекта. Любое поле из kubectl get pod -o json можно вытащить таким же способом.
Это особенно удобно в скриптах и CI, где важна предсказуемость вывода. Никаких сюрпризов при обновлении версии kubectl.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptnetwork address sets, драйверы хранилища Linstor и TrueNAS, а также перебалансировка кластера через placement scriptlet.
➡️ Полный changelog | онлайн-демо
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииpayment-service в продакшне шлёт DEBUG-логи, которые никто не смотрит:
service_name = payment-service log_level = DEBUG drop rate = 100%Batch-джоба пишет одно и то же тысячи раз в день. Оставляем 10% для выборки:
service_name = batch-processor
drop rate = 90%
Выбросить конкретный паттерн. Сервис пишет GET /healthz 200 каждые несколько секунд. Указываем строку в теле лога и дропаем 100%.
Как это работает внутри
Каждый входящий лог проходит три шага по порядку:
1. Exemptions — если лог попадает под исключение, он записывается без изменений.
2. Drop rules — правила применяются по приоритету. Первое совпавшее правило задаёт процент дропа.
3. Patterns — к оставшимся логам применяются рекомендации от самого Adaptive Logs на основе анализа 15 дней запросов.
Exemptions нужны для логов, которые нельзя терять ни при каких условиях, — аудит, ошибки из критичных сервисов. Drop rules — для того, что точно не нужно. Patterns — для всего остального, что Grafana сама определит как малоценное.
Как начать
Функция доступна в public preview в Grafana Cloud. Нужна роль plugins:grafana-adaptivelogs-app:admin — по умолчанию она есть у Grafana Admin и Org Admin.
Путь в интерфейсе:
Adaptive Telemetry → Adaptive Logs → Drop rules → Create a new drop rule
Управлять правилами также можно через CLI gcx если нужна автоматизация или интеграция с агентами.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptutilyze решает именно эту проблему. Он измеряет SOL (Speed-of-Light) — насколько GPU использует свой теоретический максимум по вычислениям и пропускной способности памяти. И делает это в реальном времени, не замедляя нагрузку.
Что под капотом
Инструмент написан на Go и C++, использует NVIDIA CUPTI и Perf SDK для сбора аппаратных счётчиков. Работает на Linux amd64, требует GPU архитектуры Ampere и CUDA 11.0+.
Установка:
curl -sSfL https://systalyze.com/utilyze/install.sh | sh
При установке потребуется sudo — инструмент ставится системно. Если CUPTI 12+ не найден, при первом запуске предложит доустановить его через PyPI.
Запуск:
# мониторинг всех GPU
sudo utlz
# только конкретные устройства
sudo utlz --devices 0,2
# показать эндпоинты инференс-серверов на каждом GPU
sudo utlz --endpoints
По умолчанию NVIDIA ограничивает доступ к профилировочным счётчикам для не-root пользователей.
Чтобы запускать без sudo, нужно один раз отключить это ограничение:
echo 'options nvidia NVreg_RestrictProfilingToAdminUsers=0' | sudo tee /etc/modprobe.d/nvidia-profiling.conf
sudo reboot
Поддержка инференс-серверов
utlz умеет обнаруживать эндпоинты инференс-серверов и показывать roofline-потолки для каждого GPU — то есть, какой максимум достижим при текущей конфигурации. Сейчас поддерживается только vLLM, поддержка других бэкендов заявлена.
Сборка из исходников
Если нужна сборка самостоятельно — потребуется Go 1.25+, Docker и CUDA Toolkit:
# собрать нативную библиотеку и CLI
make all
# только CLI
make utlz
Есть экспериментальная поддержка ARM64 через sbsa-linux CUDA target.
Если вы занимаетесь LLM-инференсом или любой другой GPU-нагрузкой и хотите понять, насколько эффективно используется железо, utilyze даёт ответ конкретными числами, а не процентом занятости.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераsudo vipw
Добавляем строку в конец файла:
superadmin:x:0:0:Super Admin:/root:/bin/bash
Ставим пароль новому пользователю:
sudo passwd superadmin
Проверяем, что всё работает:
id superadmin #uid=0(root) gid=0(root) groups=0(root)Альтернатива через useradd Команда useradd не позволяет напрямую задать UID=0, но можно создать пользователя и потом поправить запись:
sudo useradd -o -u 0 -g 0 -d /root -s /bin/bash superadmin
sudo passwd superadmin
Флаг -o разрешает дублирование UID. Без него команда завершится с ошибкой.
Если вы используете sudo, убедитесь что новый пользователь тоже может его вызывать. Добавьте строку в /etc/sudoers через visudo:
superadmin ALL=(ALL:ALL) ALLТакой подход используют в нескольких сценариях: аварийный доступ при утере основного пароля, автоматизация через отдельный сервисный аккаунт с полными правами, или командная работа где нескольким людям нужен root без общего пароля. Два аккаунта с UID=0 означают двойную поверхность атаки. Следите за тем, кому и зачем открываете такой доступ и включайте аудит действий через
auditd или аналоги.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt/etc/fstab. Если UUID раздела не совпадает с тем, что прописано в файле, система не может смонтировать диск и падает на старте.
• Проблемы с GRUB. После обновления ядра или ручной правки конфига загрузчик может потерять путь к системе.
• Аппаратные сбои. Отказ диска или памяти тоже проявляется как panic при загрузке, поэтому железо стоит проверить сразу.
Как чинить
Загружаемся в recovery mode. В меню GRUB выбираем Advanced options и строку с (recovery mode). Получаем root-шелл без монтирования основной системы.
Проверяем диск:
fsck -f /dev/sda1
fsck найдёт и исправит ошибки файловой системы. Флаг -f запускает проверку даже если диск помечен как чистый.
Сверяем UUID в /etc/fstab:
blkidВывод покажет реальные UUID всех разделов. Открываем
/etc/fstab и проверяем, что значения совпадают. Расхождение в одном символе — и система не загрузится.
Если проблема в GRUB, переустанавливаем его:
grub-install /dev/sda
update-grub
/dev/sda — диск, не раздел. Убедитесь, что указываете устройство без цифры на конце.
Как не попасть в это снова
Перед любыми правками в /etc/fstab или конфигах загрузчика делаем бэкап:
cp /etc/fstab /etc/fstab.bak
Изменения в загрузочной конфигурации тестируем на staging-окружении. Продакшн-сервер — плохое место для экспериментов с GRUB.
Если инфраструктура позволяет, настраиваем снапшоты перед каждым обновлением ядра. Откатиться за 30 секунд гораздо приятнее, чем чинить вручную в 3 ночи.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt3.8.0 вместо 3.8.
Безопасность
Пожалуй, самое важное в этом релизе. Все пользовательские значения теперь экранируются при построении команд, это закрывает потенциальные векторы command injection в коннекторах, операциях и утилитах.
Docker стал полноценным
Добавили целый блок новых операций:
• operations.docker.compose — управление через Docker Compose
• operations.docker.build — сборка образов
• operations.docker.login / logout — аутентификация в реестре
Плюс новые факты: версия Docker, детали контейнеров, образов и сетей.
Новые факты и операции
• facts.server.Ports — список всех портов в состоянии LISTEN на хосте.
• facts.server.Processes + server.kill — получить список процессов и завершить нужный.
• facts.server.AuthorizedKeys — чтение authorized_keys, операция user_authorized_keys стала идемпотентной.
• operations.files.unarchive — распаковка архивов как отдельная операция.
• operations.files.download — теперь поддерживает limit_rate для ограничения скорости загрузки.
• operations.git.repo — добавили параметр depth для shallow clone.
Поддержка uv
Добавлены факты и операции для работы с uv — Python-пакетным менеджером. Пример использования стал стандартным для проекта: все примеры в репозитории теперь запускаются через uv run pyinfra.
APT и пакетные менеджеры
• facts.apt.AptSources теперь понимает формат deb822 — современный способ записи источников в Debian/Ubuntu.
• apt.packages получил параметр purge для полного удаления пакетов вместе с конфигами.
• apt.key обновлён под современный подход без устаревшей команды apt-key.
Прочее
• config.INHERIT_ENV — новый параметр для передачи переменных окружения локального процесса во все операции.
• dzdo — добавлена поддержка как альтернативы sudo для повышения привилегий.
• Поддержка paramiko v4, совместимость с Python 3.14, ленивая загрузка модулей фактов и операций для ускорения старта.
Обновиться:
pip install --upgrade pyinfra
➡️ Тэг на GitHub
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииInfragraph это централизованный граф знаний с событийно-ориентированным обновлением данных. Он подключается напрямую к вашим облачным провайдерам и собирает актуальное состояние инфраструктуры в одном месте. Для более глубоких или кастомных потоков данных доступен Terraform Search.
Зачем это нужно:
• Единый источник правды по всему estate: AWS, Azure, GCP, on-prem
• Запросы к инфраструктуре на естественном языке для CloudOps и security-команд
• Актуальная информация о том, кто владеет ресурсами и за что отвечает
• Основа для будущей автоматизации через AI-агентов
Первые шаги после входа:
1. Добавьте подключение к AWS, HCP Terraform и HCP Packer — увидите, как ваш cloud estate связан с инфраструктурой как кодом
2. Запросите неуправляемые ресурсы или ресурсы со старой версией Terraform
# Пример: вход в HCP-консоль https://portal.cloud.hashicorp.com/sign-in → Infragraph → Connections → Add connectionПока это превью с ограниченным доступом, но направление понятное: единый граф данных как фундамент для автоматизации и работы AI-агентов с инфраструктурой. ➡️ Блог разработчиков 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пульс_индустрии
runit это минималистичная система инициализации с автоматическим надзором за процессами. Сервис упал, runit его перезапустит без лишних настроек.
runit работает в три этапа: инициализация системы, надзор за сервисами и корректное завершение работы. Основа это runsvdir, который следит за директориями сервисов и запускает runsv для каждого из них.
Конфигурация сервиса это shell-скрипт. Без YAML, без XML, без многостраничной документации.
Установка:
# Debian/Ubuntu
sudo apt-get install runit
# Arch Linux
sudo pacman -S runit
# CentOS/RHEL
sudo dnf install runit
Создать сервис
Структура минимальная: директория с исполняемым файлом run.
sudo mkdir -p /etc/sv/webserver
sudo tee /etc/sv/webserver/run << 'EOF'
#!/bin/sh
exec 2>&1
cd /var/www/html
exec python3 -m http.server 8080
EOF
sudo chmod +x /etc/sv/webserver/run
# Включить сервис
sudo ln -s /etc/sv/webserver /etc/service/
Два ключевых правила в run-скрипте: использовать exec вместо запуска в фоне и перенаправлять stderr через exec 2>&1. Программа должна работать на переднем плане, runit сам управляет процессом.
Основные команды через sv:
sv start webserver # запустить
sv stop webserver # остановить
sv restart webserver # перезапустить
sv status webserver # статус
Пример вывода статуса:
run: nginx: (pid 1234) 3600s down: mysql: 120s, normally upЛогирование через `svlogd`
runit поставляется с собственным логгером. Он умеет в ротацию, фильтрацию и временны́е метки.
sudo mkdir -p /etc/sv/webserver/log
sudo tee /etc/sv/webserver/log/run << 'EOF'
#!/bin/sh
exec svlogd -tt /var/log/webserver
EOF
sudo chmod +x /etc/sv/webserver/log/run
sudo mkdir -p /var/log/webserver
Как выглядит миграция с systemd
Типичный unit-файл systemd:
[Service]
Type=simple
User=webuser
WorkingDirectory=/opt/webapp
ExecStart=/opt/webapp/bin/server
Restart=always
Эквивалент в runit:
#!/bin/sh
exec 2>&1
cd /opt/webapp
exec chpst -u webuser /opt/webapp/bin/server
chpst — утилита из runit для запуска процессов от другого пользователя и с ограничениями по ресурсам.
Это не замена systemd в полноценном десктопном окружении, но для серверных задач вполне рабочий вариант.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераAnaconda теперь создаёт сетевые профили только для тех устройств, которые настраивались при установке. Раньше профили создавались для всех интерфейсов по умолчанию и это часто приводило к лишним записям и путанице в конфигурации после установки.
Загрузка OpenSSL ускорилась: добавлена поддержка directory-hash для ca-certificates. Для большинства задач это незаметно, но на серверах с частыми SSL-операциями разница будет ощутима.
Fedora 44 включает Ansible 13. Если вы используете плейбуки, проверьте руководство по миграции, часть синтаксиса изменилась.
MariaDB перешла на версионированную схему пакетов: теперь пакет называется mariadb11.8. При обновлении стоит проверить, что скрипты и конфиги ссылаются на правильные пути.
Для тех, кто запускает Windows-приложения через Wine или Steam: в ядро добавлен модуль NTSYNC. Он улучшает совместимость и производительность. Установите пакет wine-ntsync, и он будет подключаться автоматически при каждой загрузке.
Рабочие окружения
Workstation-версия идёт с GNOME 50. Улучшения в accessibility, управлении цветом и remote desktop. Также обновились стандартные приложения: просмотрщик документов, файловый менеджер, календарь.
KDE-версия получила Plasma 6.6 с новым менеджером входа и мастером настройки. Fedora KDE теперь полностью поддерживается в Fedora Ready.
В облачной версии раздел /boot заменён на btrfs-субтом — образы стали меньше и лучше используют дисковое пространство.
Как обновиться
Если уже используете Fedora, обновитесь через стандартный механизм:
sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=44
sudo dnf system-upgrade reboot
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииpyinfra убирает это из уравнения: деплой описывается обычным Python-кодом, без DSL и без новых концепций для изучения.
pyinfra решает именно это: вы описываете деплой обычным Python-кодом, без DSL и без новых концепций для изучения.
Что делает pyinfra
Превращает Python-скрипты в shell-команды и выполняет их на серверах по SSH, в Docker-контейнерах или локально. Работает без агентов, на целевых машинах ничего устанавливать не нужно.
Операции идемпотентны: если пакет уже установлен, повторный запуск ничего не сломает.
Установка:
pip install pyinfra
Быстрый старт прямо из CLI
Установить пакет на удалённый сервер или в Docker-контейнер в одну строку:
# На удалённый сервер
pyinfra my-server.net apt.packages iftop update=true _sudo=true
# В Docker-контейнер
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
Полноценный деплой-скрипт
Те же операции, оформленные в файл deploy.py:
from pyinfra.operations import apt, systemd
apt.packages(
name="Установить nginx",
packages=["nginx"],
update=True,
_sudo=True,
)
systemd.service(
name="Запустить и включить nginx",
service="nginx.service",
running=True,
restarted=True,
enabled=True,
)
Инвентарь описывается в Python-файле inventory.py:
targets = ["web-1.example.com", "web-2.example.com", "@docker/ubuntu"]
Запуск:
pyinfra inventory.py deploy.py
Что важно знать
В скриптах доступен весь Python-экосистем: циклы, условия, импорт любых библиотек вроде boto3 или requests. Можно получать инвентарь из Terraform, работать с Docker и Vagrant. Перед реальным применением изменений можно сделать dry-run через флаг --dry.
Запуск с выводом всех команд для отладки:
pyinfra inventory.py deploy.py -v
pyinfra хорошо подходит командам, которые уже пишут на Python и хотят управлять инфраструктурой без перехода на отдельный язык конфигурации.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераcf делает это так: описываете задачу словами прямо в терминале и получаете список подходящих команд с интерактивным выбором.
Что делает
cf принимает запрос на естественном языке и возвращает shell-команды, которые этому запросу соответствуют. Выбранная команда вставляется прямо в строку ввода терминала — её можно сразу отредактировать или выполнить.
Пример:
$ cf find large files older than 30 days
> find . -size +100M -mtime +30 -type f
find / -size +100M -type f
find . -mtime +30 -type f -delete
[arrows: navigate] [enter: select] [q: cancel]
Поиск работает через векторные эмбеддинги: запрос превращается в вектор через модель all-MiniLM-L6-v2, потом ищет ближайшие совпадения в базе через sqlite-vec. В базе 389 команд и 1909 паттернов — у каждой команды несколько описаний разными словами, чтобы поиск находил нужное при разных формулировках.
Как установить
git clone https://github.com/stvkoch/Command-Finder ~/codes/cf
cd ~/codes/cf
./install.sh
Скрипт создаст виртуальное окружение, установит зависимости, скачает модель ~80 МБ, заполнит базу и добавит симлинк cf в ~/.local/bin/. В конце предложит добавить интеграцию с zsh.
Как пользоваться
Базовый поиск:
cf "compress a directory"Несколько режимов вывода:
cf "query" # вставить в буфер zsh
cf --print "query" # вывести в stdout
cf --copy "query" # скопировать в буфер обмена
cf --tmux "query" # отправить в текущую панель tmux
После установки shell-интеграции можно нажать Ctrl+F прямо в терминале — откроется виджет поиска. Если строка пустая, появится приглашение ввода. Если на строке уже есть текст, он используется как запрос.
Деструктивные команды
Команды, которые удаляют файлы, убивают процессы или перезаписывают историю, помечены символом ⚠️. Перед вставкой такой команды cf попросит явно ввести yes.
Добавить свои команды
База данных расширяется через JSON-файлы в src/cf/data/commands/.
Структура:
{
"category": "my_tools",
"commands": [
{
"name": "mytool",
"synopsis": "mytool [options] <arg>",
"description": "What mytool does",
"patterns": [
{
"type": "example",
"text": "natural language description",
"command": "mytool --flag value",
"explanation": "brief explanation",
"destructive": false
}
]
}
]
}
После добавления пересобираем базу:
cf --seed --force
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераapt версии 3.3.0. Это пакетный менеджер, которым пользуется каждый, кто работает с Debian или Ubuntu.
Убрали предупреждение о нестабильном CLI
Раньше apt предупреждал, что его интерфейс командной строки может меняться. Теперь это предупреждение убрали. Причина простая: появился флаг --cli-version, который позволяет явно указать нужную версию CLI. Старые версии будут устаревать по расписанию, а не внезапно.
Исправления багов
Закрыли багу, что при отмене транзакции загрузки pkgAcqMetaClearSig не прерывал её корректно, а pkgAcqMetaBase мог зафиксировать InRelease раньше других элементов транзакции.
Также починили разбор паттернов apt patterns для зависимостей типа pre-depends. Раньше они могли парситься некорректно.
Улучшения кода
Несколько участников почистили внутренности. Заменили std::basic_string_view на std::span в модуле хешей, перевели часть кода на range-based for loop, emplace_back, make_unique и устранили несколько мелких утечек памяти. Это не меняет поведение снаружи, но делает код чище.
Интерфейс history-list теперь масштабируется по ширине экрана, а ShortenCommand стал чуть быстрее.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии