Библиотека девопса | DevOps, SRE, Sysadmin – Telegram
Библиотека девопса | DevOps, SRE, Sysadmin
10.3K subscribers
1.7K photos
76 videos
4 files
3.02K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
🧑‍💻 Self-hosting в 2026

Раньше self hosting ассоциировался с вечерами над портами, Docker compose из трех блогов и «почему оно опять упало». Сейчас агенты вроде Claude Code берут на себя всю рутину, пишете «поставь Vaultwarden с Caddy», идёте за кофе, возвращаетесь к готовому compose и запущенным контейнерам.

Дешевые мини ПК тихие и кушают минимум энергии, стоят меньше выходных в баре, и на них спокойно крутятся 13 сервисов на 4 ГБ RAM.

В итоге на домашнем сервере висят полезные штуки, пароли в Vaultwarden с нативными клиентами, фото в Immich с распознаванием лиц, Plex для медиа, Uptime Kuma для мониторинга, Home Assistant для умного дома.

➡️ Как решить боль селфхостинга

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤔1
👨‍💻 Кроссшелл промпт из будущего

Starship это Rust промпт для терминала, который ставится везде и показывает ровно то, что нужно в данный момент.

Ставится через curl скрипт или менеджеры, на любой Linux дистрибутив, Mac, Windows, даже Android в Termux.

После установки добавляете eval "$(starship init bash)" в .bashrc или аналог в другой шелл, и перезапускаете терминал.

Из коробки видит git статус, текущую ветку, direnv, версии node,python и go, docker контекст, и меняет цвет если команда провалилась.

Если терминал — это основной интерфейс, стоит потратить минуту на установку.

➡️ Гайд по установке

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
💻 Linux Mint 22.3 Zena

Linux Mint 22.3 под кодовым именем Zena теперь доступен для скачивания. Это LTS-версия на базе Ubuntu 24.04.3 с поддержкой до апреля 2029 года.

Свежее издание принесло Cinnamon 6.6 с переработанным меню приложений, боковой панелью для аватара, мест и фаворитов. Nemo обзавелся поиском по регулярным выражениям, паузой копирования файлов и шаблонами в контекстном меню. Экранная клавиатура переписана нативно, улучшена Wayland-поддержка, добавлены индикаторы уведомлений на панели.

➡️ Release Notes

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42
🛠 Eza — когда ls уже не впечатляет

Eza — это современная замена ls, написанная на Rust. Главное отличие: вывод сразу читабельный, а не набор символов, который нужно расшифровывать.

Что внутри

Цветная подсветка по умолчанию. Папки, файлы, симлинки — каждый тип отличается визуально. Не нужно вглядываться в права доступа, чтобы понять, что перед вами.

Иконки для файлов. Если терминал поддерживает Nerd Fonts, увидите значки рядом с именами. Мелочь, но код на Python сразу отличается от markdown-файла.

Git-статусы в выводе. Команда eza --git покажет, какие файлы изменены, добавлены или проигнорированы.

Древовидная структура. Флаг --tree развернёт директории в дерево. Глубину контролируете параметром --level.

Детальная информация. Флаг --long выведет размеры, даты изменения, владельцев. Плюс человекочитаемые форматы: не «4096 байт», а «4.0 КБ».

Eza доступна через пакетные менеджеры большинства систем:
# macOS
brew install eza

# Ubuntu/Debian
apt install eza

# Arch
pacman -S eza


После установки можете создать алиас в .bashrc или .zshrc:
alias ls='eza --icons'
alias ll='eza --long --git --icons'
alias tree='eza --tree --icons'


Eza не меняет рабочий процесс радикально, но убирает микрораздражители. А в долгосрочной перспективе это экономит больше времени, чем кажется.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🤔1
🔍 systemd-analyze: что тормозит загрузку Linux

systemd-analyze — встроенный инструмент для диагностики. Показывает какие сервисы жрут время при старте и где система простаивает.

Быстрая диагностика

Проверить общее время загрузки:


Результат:
Startup finished in 3.2s (firmware) + 2.1s (loader) + 
1.8s (kernel) + 12.4s (userspace) = 19.5s


Сразу видно проблему — userspace съел 12 секунд из 19. Копаем дальше.

Смотрим топ медленных сервисов:
systemd-analyze blame

8.234s postgresql.service
2.891s docker.service
1.456s NetworkManager-wait-online.service
0.234s nginx.service


PostgreSQL стартует 8 секунд. Может база огромная, либо что-то не так с конфигом.

Сервисы запускаются не параллельно, а друг за другом по зависимостям:
systemd-analyze critical-chain

graphical.target @19.2s
└─multi-user.target @19.1s
└─postgresql.service @10.8s +8.2s
└─network.target @10.7s
└─NetworkManager.service @8.2s +2.4s


Видно: postgresql ждёт сеть, сеть ждёт NetworkManager. И все остальные сервисы встали в очередь за базой.

График покажет картину целиком:
systemd-analyze plot > boot.noscript
firefox boot.noscript


Получаете таймлайн с цветными полосками — когда каждый сервис стартовал, сколько времени занял, кто с кем параллелился. Узкие места видны сразу.

Узнать время старта отдельного сервиса:
systemd-analyze blame | grep nginx


Или посмотреть его зависимости:
systemd-analyze critical-chain nginx.service


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

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4
Roadmap: Оркестрация и деплой ИИ-агентов

Для `DevOps`-инженера ИИ-агенты — это новые типы нагрузок, требующие специфического мониторинга, безопасности и масштабирования.

План освоения технологии:

— понимание логики автономных агентов и их взаимодействия с API;

— настройка окружений для работы мультиагентных систем;

— управление состоянием (`State`) и памятью агентов в кластерах;

— безопасность и контроль доступа при Tool Calling.

Курс «Разработка ИИ-агентов» поможет разобраться в архитектуре ИИ-сервисов и научиться внедрять их в продакшн.

Освоить ИИ-инструменты

Акция «3 в 1» до 19 января: купите курс и получите ещё два в подарок.
🤔1
🍷 Свежий Wine

Wine 11.0 вышел после года разработки и тысяч правок. Основные новинки: ARM64EC архитектура, улучшенная поддержка HiDPI, Wayland по умолчанию и экспериментальный FFMPEG-бэкенд для мультимедиа.

➡️ Анонс

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📝 touch — недооценённая команда

Все знают touch как «создать пустой файл». Но это лишь верхушка айсберга.

Что на самом деле делает touch:

Обновляет временные метки файла (access time, modification time). Создание файла — побочный эффект, если файл не существует.

Базовое использование:
# Создать пустой файл
touch app.log

# Обновить время изменения существующего файла
touch config.yaml

# Создать несколько файлов
touch file1.txt file2.txt file3.txt


Продвинутые флаги:
# Установить конкретное время
touch -t 202501150830.00 file.txt
# Формат: [[CC]YY]MMDDhhmm[.ss]

# Установить время как у другого файла
touch -r reference.txt target.txt

# Изменить только access time
touch -a file.txt

# Изменить только modification time
touch -m file.txt

# Не создавать файл, если не существует
touch -c file.txt


Полезные комбинации:
# Создать структуру директорий с файлами
mkdir -p app/{config,logs,data}
touch app/config/.gitkeep app/logs/.gitkeep

# Найти файлы старше 30 дней и "омолодить"
find /tmp -type f -mtime +30 -exec touch {} \;

# Обновить timestamp только если файл существует
[ -f config.json ] && touch config.json

# Создать файл с правами в одну команду
(umask 077 && touch secret.key)


touch — это швейцарский нож для работы с временными метками и файловыми операциями.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42💯2
🐳 Секреты из .env в Docker

Мы уже говорили, что переменные из .env файлов при сборке Docker-образов запекаются в слои навсегда. Вот свежий кейс от команды, где ключи БД и токены оказались доступны всем.

Что пошло не так

В Dockerfile скопировали .env в контекст или использовали в RUN-командах. Результат: docker history показывает секреты, любой pull видит их в inspect.

Фикс и лучшие практики

Передавайте через --env-file только на runtime. Для build ARG без дефолтов и --build-arg снаружи. Multi-stage сборка сбрасывает промежуточные слои с данными.

➡️ Живой пример | Зеркало

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#разбор_полётов
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 QR-коды чистым SQL в PostgreSQL

Разработчик проснулся рано из-за кота и за час с помощью ИИ написал генератор QR-кодов одним SQL-запросом для Postgres.

Никаких расширений или библиотек не нужно, просто выполним скрипт:
psql -qf pqr.sql -v payload='Hello, World!'


И на выходе нас ждёт QR-код.

➡️ Скрипт забираем здесь

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🏭 Трудоголики снова в моде

Что происходит, когда рынок из «кандидатского» превращается в «работодательский»? Культ личной эффективности вместо командной работы, up-or-out вместо саббатикала, и «работай или уходи» вместо «мы о тебе заботимся».

2026 год в IT — это конец иллюзии про дружескую атмосферу в офисе и начало честной истории про трудоголизм как норму выживания.

➡️ Узнать в этом кто виноват

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2😢1
😤 «Я ненавижу GitHub Actions всей душой»

Разработчик написал эмоциональный текст о том, почему GitHub Actions — это боль. Переводим и разбираем аргументы.

Главные претензии:

1. YAML-ад:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm test


Выглядит просто? Но здесь довольно просто докинуть багов:

• Опечатка в node-version → silent fail
• Забыл @v3 в actions → неожиданная версия
• Отступы не там → непонятная ошибка

2. Дебаг — это пытка

В других CI можно:

• Подключиться по SSH к раннеру
• Запустить локально (GitLab Runner)
• Посмотреть полные логи

В GitHub Actions:

• Логи обрезаны
• Нельзя зайти на раннер
• Локальный запуск через костыли (act)
• Цикл «коммит → push → wait → fail» занимает минуты

3. Секреты — русская рулетка:
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
run: ./deploy.sh


Проблемы:

• Секрет не установлен? Пустая строка
• Опечатка в имени? Пустая строка
• Секрет в форке? Не работает
• Дебажить? Удачи, secrets маскируются в логах

4. Кеширование — лотерея:
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}


Проблемы:

• Кеш иногда не восстанавливается
• Иногда восстанавливается битый кеш
• Лимит 10 GB → старые кеши удаляются

5. Версии actions — dependency hell:
- uses: actions/checkout@v3      # Какая v3? v3.0? v3.5?
- uses: actions/setup-node@v3 # Deprecated через месяц
- uses: docker/build-push-action@v4 # Ломает старые workflow


• Нет lock-файла для actions
• Breaking changes в минорных версиях
@main — может сломаться завтра
• @sha — нечитаемо и надо обновлять вручную

💬 Как у вас с GitHub Actions? Всё спокойно или тоже есть дровишки в огонь?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
💯3
«Этот манёвр будет стоить нам 51 год...»

DevOps — это не только YAML-конфиги, но и умение автоматизировать процессы с помощью Python и понимание архитектуры систем. Рынок требует всё больше компетенций в ИИ.

Успейте забрать обучение в Proglib Academy по ценам 2025 года:

— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования

Выбрать направление

⚠️ Стоимость изменится 19 января
🏷 Теги и лейблы в Terraform как привычка

Ресурсы без тегов почти всегда превращаются в невидимые расходы и в проблемы с управлением. Если навести порядок в тегах прямо в Terraform модулях, инфраструктуру проще искать, считать и контролировать.

Лучше начинать со схемы на уровне модуля. У каждого модуля должен быть входной map для tags или labels и этот map должен применяться ко всем ресурсам, которые это поддерживают. Идея простая. В модуле есть базовые поля вроде окружения и владельца, а сверху можно передать дополнительные теги и объединить их через мерж.

Пример:
variable "environment" {
type = string
}

variable "owner" {
type = string
}

variable "tags" {
type = map(string)
denoscription = "Общие теги для всех ресурсов"
default = {}
}

locals {
common_tags = merge(
{
env = var.environment
owner = var.owner
terraform = "true"
},
var.tags
)
}

resource "proglib_bucket" "this" {
bucket = var.owner

tags = local.common_tags
}


Последний шаг это запрет на ресурсы без обязательных тегов. Это можно сделать через policy as code и проверки, чтобы не разгребать мусор уже в проде.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
👀 Наглядная иерархия процессов в Linux

systemd-cgls — это утилита для отображения иерархии control groups в системах на базе systemd. Она показывает древовидную структуру всех процессов, сгруппированных по юнитам systemd.

В отличие от классического ps или top, systemd-cgls показывает не просто список процессов, а их организационную структуру: какие процессы принадлежат каким службам, сессиям пользователей и слайсам системы.

Просто запустите без аргументов:
systemd-cgls


Вы увидите дерево, разделённое на слайсы:

system.slice — системные службы
user.slice — пользовательские сессии
machine.slice — виртуальные машины и контейнеры

Показать только конкретный юнит:
systemd-cgls /system.slice/nginx.service


Показать процессы определённого пользователя:
systemd-cgls /user.slice/user-1000.slice


📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 COPY с chown и меньше боли с правами

Если в контейнере приложение запускается не от root, то права на файлы часто ломают сборку или запуск. Вместо отдельного RUN chown можно сразу копировать файлы с нужным владельцем через COPY с флагом chown.

Простой пример для приложения, которое запускается от appuser:
FROM alpine:3.20

RUN addgroup -S app && adduser -S -G app appuser

WORKDIR /app

COPY --chown=appuser:app . /app

USER appuser
CMD ["./app"]


Если в образе нет /etc/passwd или /etc/group, и указать имя пользователя или группы, сборка может упасть, поэтому для минимальных образов иногда проще использовать числовые UID и GID.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🗞 Первая рабочая неделя

Собрали для вас новости и материалы прошедшей недели.

Трудоголики снова в моде

Свежий Wine

Когда ls уже не впечатляет

Linux Mint 22.3 Zena

SSD за грамм стали дороже золота

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
HEALTHCHECK в Dockerfile чтобы контейнер не умирал молча

Контейнер может продолжать работать, даже если внутри уже все сломалось. HEALTHCHECK позволяет Docker периодически проверять состояние и выставлять статус healthy или unhealthy.

Самый простой вариант это дергать внутренний эндпоинт и падать по ненулевому коду, если ответ плохой. Docker поддерживает параметры interval, timeout и retries, чтобы настроить частоту и порог ошибок.

Пример:
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1


Команда может быть любой, главное чтобы успешный результат был exit 0, а неуспешный exit 1.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
price_update: scheduled for Jan 20

Завтра мы деплоим повышение цен на все программы. Успейте сегодня нажать apply, пока старые условия не превратились в legacy.

Настроить пайплайн саморазвития
🥱1