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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
😊 Как сервисы общаются с systemd

systemd умеет не только запускать и перезапускать сервисы, но и разговаривать с ними. Механизм notify — это способ для демона сказать: «я реально готов», «я перезагружаю конфиг», «я живой, не убивай меня».

Зачем вообще нужен notify

Классический юнит Type=simple врёт сам себе: как только процесс стартанул — считаем сервис запущенным. А в реальности БД ещё поднимает файлы, веб‑сервер открывает сокеты, а ваш сервис в этот момент не готов обслуживать запросы.

Type=notify + systemd-notify решают эту проблему: systemd ждёт явного сигнала READY=1, и только после этого считает сервис активным и запускает зависящие юниты.

Как это устроено под капотом

• При старте юнита с Type=notify systemd прокидывает в окружение переменную NOTIFY_SOCKET — путь до UNIX‑сокета, куда сервис должен отправлять уведомления.

• Сам сервис либо вызывает sd_notify() из libsystemd, либо запускает утилиту systemd-notify, чтобы отправить строки вида READY=1, STATUS=…, RELOADING=1, STOPPING=1, WATCHDOG=1.

systemd-notify — это просто тонкая обёртка над sd_notify(), которая делает этот протокол доступным из shell‑скриптов и простых сервисов без прямой линковки с libsystemd. Она умеет:

• отправлять --ready, --reloading, --stopping, --status="...", --pid=...

• работать в режиме --exec: сначала отправить уведомление, потом exec процесса; или --fork: подождать READY=1 от дочернего процесса и вернуть его PID.

Watchdog и «я живой»

Через этот же канал работает и watchdog. Если в юните настроен WatchdogSec=…, systemd ждёт периодических сообщений WATCHDOG=1. Пока они приходят — сервис считается здоровым, как только нет — менеджер перезапускает его.

Это даёт очень дешёвый health‑check без дополнительных скриптов и cron’ов: сервис сам регулярно подтверждает, что цикл событий жив и не завис.

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔄 Cinnamon 6.6: меню стало умнее

Новая версия оболочки cinnamon готова к бою. — компактное меню, гибкие настройки панели и полный контроль над интерфейсом. Готовимся к Mint 22.3.

Что нового в Cinnamon 6.6


• Переделали меню: появилась боковая панель с аватаром пользователя, избранными каталогами и часто используемыми приложениями. Появились тултипы с описаниями программ при наведении, разделили «закладки» и «избранные каталоги» и упростили навигацию с клавиатуры.

• System Reports превратили в System Information: помимо общей инфы и отчётов о проблемах появились отдельные разделы по USB, PCI, GPU и BIOS/прошивкам. Добавили отдельное приложение System Administration.

• Сильно переработали работу с клавиатурой, включая полную совместимость с Wayland. Есть полноценное переключение раскладок и улучшенная поддержка методов ввода, причём настройки обычных раскладок и IBus теперь разделены.

➡️ Релиз на GitHub

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
2
📰 Новости недели

Блин-блинский, до Нового Года 17 дней!

Oracle Linux 10.1

Fastfetch 2.56.0

Ghostty стал некоммерческим проектом

WSL 2.7.0

Microsoft выпустила пререлиз WSL 2.7.0 подсистемы Windows для Linux которая позволяет запускать Linux окружение и приложения прямо в Windows, обновив downstream ядро до Linux 6.6.114 LTS, добавив поддержку свежих дистрибутивов вроде Debian 13, Ubuntu 25.10, Fedora 43, SUSE Linux 16, новых версий openSUSE, Kali 2025.3 и декабрьского Arch Linux.

Топ 10 моментов 2025 у Grafana

Grafana Labs подвела итоги 2025 года и выделила десять ключевых моментов.

HashiCorp Boundary 0.21

Boundary теперь умеет автоматически подставлять учетные данные в RDP сессии через Kerberos и NTLMv2. Пользователи аутентифицируются один раз через IdP и вообще не видят логины и пароли.

Почитать:

Нужен ли диплом будущему DevOps инженеру

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

#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что из этого реально есть в вашей работе
Anonymous Poll
71%
Grafana + Loki/Prometheus
46%
Jenkins + Ansible
63%
kubectl
55%
cron задачи
29%
rsync
💻 Проверка доступности порта на удалённом хосте

Иногда нужно быстро убедиться, что определённый порт на удалённом сервере доступен и принимает подключения. Это нужно для диагностики сетевых проблем и проверки работы файрвола.

Используйте команду:
nc -zv example.com 443


nc (netcat) с ключами -zv проверяет открытость порта без передачи данных.

-z означает «сканировать без отправки данных».

-v включает подробный вывод, чтобы видеть результат проверки.

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

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

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Когда сервис есть, а эндпоинтов ноль

В Kubernetes сервис живет за счет совпадения селектора и меток у pod’ов. Стоит им разъехаться сервис останется без эндпоинтов и трафик просто перестанет доходить.

Классика сервис ищет pod’ы по селектору app: frontend, а Deployment размечает их как component: frontend или app: ui. В итоге сервис существует, DNS работает, но kubectl get endpoints my-service показывает пустой список, а наружу это выглядит как «все крутится, но запросы висят».

Пример:
# Service
spec:
selector:
app: frontend
---
# Deployment pod labels
metadata:
labels:
app: ui


Такая мелочь превращает все реплики в осиротевшие поды. Сервис их не видит и не проксирует к ним трафик. Диагностика всегда начинается с kubectl get endpoints <svc> и проверки kubectl get pods -l key=value.

Чтобы не ловить тихие простои держите правило селекторы и метки описываются в одном месте и копируются, а не набираются с клавиатуры плюс при любом изменении сразу проверяйте kubectl get endpoints и kubectl describe svc прежде чем считать rollout успешным.

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

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
CI/CD для твоих скиллов

DevOps — это вечное обучение. Инструменты меняются, подходы устаревают. Чтобы твой пайплайн развития не упал, нужно вовремя накатывать обновления.

Спецпредложение 1 + 2:

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

Что пригодится инженеру:

— программирование на Python (для автоматизации всего);
— основы IT (структурировать хаос).

Настроить пайплайн

До 31 декабря.
Саппорт: @manager_proglib
1
🔄 Вышел Kali Linux 2025.4

Kali выкатили релиз 2025.4. Главное изменение — GNOME обновили до версии 49, полностью перевели на Wayland и выкинули X11 сессии. Заодно чуть причесали UX заменили Totem на Showtime, научили грид приложений складывать Kali tools в папки.

Live образ стал жертвой роста всего подряд его размер окончательно пробил лимит Cloudflare CDN в районе 5 ГБ, поэтому команда официально перевела доставку Live ISO исключительно на BitTorrent.

На стороне тулзов добавили bpf-linker, evil-winrm-py и hexstrike-ai и заодно подтянули ядро до 6.16. NetHunter получил поддержку Android 16 для нескольких устройств, обновленный Terminal с поддержкой новых версий Magisk, косметику в UI и новые шаблоны для WiFi атак.

➡️ Release Notes

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

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👨‍💻 Автоматизация настройки балансировщика нагрузки HAProxy

Настройка балансировщика нагрузки — важная задача для любого масштабируемого сервиса. Автоматизация с помощью Playbook помогает быстро и без ошибок развернуть HAProxy на нужных серверах.

Пример Ansible плейбука для установки и настройки HAProxy:
- name: Install and configure HAProxy
hosts: lb_servers
become: yes
tasks:
- name: Install HAProxy
apt:
name: haproxy
state: present

- name: Configure HAProxy
template:
src: haproxy.cfg.j2
dest: /etc/haproxy/haproxy.cfg


Пример шаблона haproxy.cfg.j2 с базовыми настройками:
    log /dev/log local0
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
user haproxy
group haproxy
daemon

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

frontend http_front
bind *:80
default_backend http_back

backend http_back
balance roundrobin
server web1 192.168.1.101:80 check
server web2 192.168.1.102:80 check


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

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🧑‍💻 Появилась дорожная карта по DevSecOps

roadmap.sh дропнули новую роадмапу по DevSecOps. Если думали перейти, но не было внятного плана, то это отличный и продуманный путь на 2026 год.

Можно быстро прикинуть, чего не хватает от secure coding и контейнерной безопасности до мониторинга, инцидент респонса и комплаенс.

➡️ Начать путь секьюрщика

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

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

#архитектура_на_салфетке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👾1
🔒 Невидимый защитник ваших файлов

Когда вы создаёте файл в Linux, вы думаете, что указываете ему права доступа. Но на самом деле происходит кое-что более сложное. umask — это скрытый охранник, который удаляет права из ваших файлов без вашего ведома.

Проблема: Файл создался, но прав меньше, чем ожидалось

Представьте ситуацию:
$ touch myfile.txt
$ ls -l myfile.txt
-rw-r--r-- 1 user user 0 Dec 16 10:00 myfile.txt


Вы ожидали, что файл будет доступен для записи группе и другим пользователям. Но этого не произошло. Вместо ожидаемых 0666 rw-rw-rw- вы получили 0644 rw-r--r--.

umask — это маска вычитания прав доступа. Это не то, что добавляет права, а то, что их удаляет.

Выглядит это примерно так:
Желаемые права файла:      0666 (rw-rw-rw-)
Текущий umask: 0022 (----w--w-)
Результат (0666 & ~0022): 0644 (rw-r--r--)


Как узнать текущий umask:
$ umask
0022


Как изменить umask в текущей сессии:
$ umask 0077
$ touch secret.txt
$ ls -l secret.txt
-rw------- 1 user user 0 Dec 16 10:00 secret.txt


Постоянно: добавить в ~/.bashrc или ~/.zshrc

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

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4
📎 Простой скрипт для мониторинга ресурсов системы

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

Небольшой Python-скрипт с библиотекой psutil поможет быстро контролировать эти показатели:
import psutil

def check_system_resources():
cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory().percent

if cpu_usage > 80:
print(f"High CPU usage: {cpu_usage}%")
if memory_usage > 80:
print(f"High Memory usage: {memory_usage}%")

check_system_resources()


Что делает скрипт:

• Измеряет загрузку процессора за 1 секунду
• Проверяет процент занятой оперативной памяти
• При использовании CPU или памяти выше 80% выводит предупреждение

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

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

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32
🏆 Топ-вакансий для девопсов за неделю

DevOps Engineer от 175 000 ₽ в Санкт-Петербург.

DevOps-инженер
от 300 000 ₽ в Москву.

Lead DevOps Specialist до 350 000 ₽ на удалёнку. Хотели стать лидом? Это ваш шанс.

➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs

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

#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM