DevOps Ready | IT
6.33K subscribers
670 photos
52 videos
302 links
Авторский канал по DevOps разработке.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/devops_ready
Download Telegram
🖼️ Helm: Разбираем 7 приёмов для работы с values и шаблонами!

Даже опытные инженеры иногда путаются в отступах или не знают, как заставить Helm проверить наличие секрета в кластере перед деплоем. Эти функции сделают ваши чарты чище, безопаснее и гибче.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥75👍5
📂 Напоминалка для работы с Linux LVM!

Например, pvcreate инициализирует диск или раздел под LVM, а vgcreate объединяет физические тома в volume group.

На картинке — наглядная схема архитектуры LVM и самые часто используемые команды для управления physical volumes, volume groups и logical volumes.

Сохрани, чтобы не забыть!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7🔥6🤝3
Как защитить скрипт от двойного запуска?

Бывает, что cron/CI/ручной запуск запускают один и тот же скрипт дважды.

Своеобразным замком может послужить flock, он берёт advisory lock на файл через дескриптор:
exec 9>/tmp/myjob.lock


Здесь мы открыли файл-замок и привязали его к FD 9.

Пробуем взять lock без ожидания, если уже занято, сразу выходим:
flock -n 9 || exit 0


Дальше можно выполнять работу, пока процесс жив, lock удерживается ядром:
echo "running: $$"


Для проверки откроем второй терминал и запустим тот же блок, второй экземпляр завершится (или можешь заменить exit 0 на сообщение):
sleep 10


🔥 flock - способ защитить скрипт от повторного запуска: блокировка привязана к процессу, автоматически снимается ядром и не требует ручной очистки файлов.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥7
👍 Актуальная статья для тех, кто хочет вырасти в DevOps и понять, куда движется профессия в 2026 году!

В этой статье:
• Разбирают эволюцию DevOps от «собака-деплоер» к платформенной инженерии;
• Показывают, какие скиллы востребованы;
• Объясняют карьерный трек: что отличает mid от senior/platform engineer и как перейти от «фикса серваков» к дизайну инфраструктуры.


🔊 Продолжай читать на Habr!


➡️ DevOps Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4🔥4
Поиск открытых, но удалённых файлов!

Если файл удалён, но процесс продолжает удерживать его файловый дескриптор, место на диске не освобождается до закрытия этого дескриптора.

Поиск таких файлов:
sudo lsof -nP +L1


Команда показывает файлы с link count = 0 — то есть удалённые из файловой системы (unlinked), но всё ещё открытые процессами.

Фильтрация по пути:
sudo lsof -nP +L1 /var


Позволяет отфильтровать файлы, связанные с указанным путём (по имени/расположению файла).

Формат вывода зависит от версии lsof и ширины терминала, поэтому парсинг через awk возможен, но небезопасен — используйте вывод как ориентир.

Освобождение места без перезапуска системы:
sudo kill -HUP PID


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

Завершение процесса:
sudo kill PID


Отправляется SIGTERM — процесс штатно завершается, закрывает файловые дескрипторы и освобождает место. SIGKILL (-9) — крайняя мера, если процесс не реагирует.

Проверка после очистки:
df -h
sudo lsof -nP +L1


Важно убедиться, что удалённые файлы больше не удерживаются процессами.

🔥 Типичная ситуация при ручном удалении логов без logrotate или при аварийной ротации файлов.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7🤝62
👍11🔥6🤝62
Выдача бинарникам точечных привилегий через setcap!

Иногда программе нужен root только для одной операции (bind к 80 порту, raw socket, cap_sys_ptrace). Для этого в Linux есть capabilities — они управляются через setcap.

Проверка capabilities у исполняемого файла:
getcap /usr/bin/ping


Типичный вывод:
/usr/bin/ping cap_net_raw=ep


В современных дистрибутивах ping часто не setuid-root, а работает через capabilities, получая доступ к raw socket.

Пример: разрешить бинарнику слушать порт <1024 без root:
sudo setcap cap_net_bind_service=ep ./server


Теперь запуск возможен от обычного пользователя:
./server


Bind к :80 будет работать без sudo.

Проверка назначенных capabilities:
getcap ./server


Удаление capabilities у бинарника, если нужно полностью убрать выданные ранее права и вернуть его в обычное состояние:
sudo setcap -r ./server


Несколько capabilities сразу, если бинарнику требуется больше одного привилегированного действия:
sudo setcap cap_net_bind_service,cap_sys_time=ep ./tool


Просмотр списка и описания всех capabilities:
man 7 capabilities


Важно: работает только на файловых системах с поддержкой extended attributes, cp по умолчанию сбрасывает xattr (используйте cp --preserve=xattr или -a), tar сохраняет capabilities только с --xattrs

🔥 Capabilities — способ выдавать минимально необходимые права, вместо запуска всего от root.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5🤝51
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Linux/DevOps Interview Questions — вопросы для подготовки к собеседованиям!

Отличный репозиторий с реальными вопросами, которые проверяют знания Linux и DevOps. Здесь есть вопросы по командам, процессам, файловым системам, сетям, bash и другим темам, которые часто встречаются в задачах и на собеседованиях.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥10🤝72
Скрипт с автозапуском: чтобы не забыть — автоматизируй!

Хочешь, чтобы скрипт сам запускался при включении Linux? Например, для логирования, запуска сервисов или отправки уведомлений. Сделать это можно через systemd — просто, нативно и надёжно.

Сначала создаём bash-скрипт, который будет выполняться при загрузке. Пусть он, например, записывает время старта в лог-файл:
#!/bin/bash
echo "Система запущена: $(date)" >> /var/log/boot-script.log


Сохрани его как /usr/local/bin/boot-script,sh и сделай исполняемым:
chmod +x /usr/local/bin/boot-script.sh


Теперь создаём unit-файл systemd:
/etc/systemd/system/boot-script.service
[Unit]
Description=Мой автозапускаемый скрипт
After=network.target
[Service]
ExecStart=/usr/local/bin/boot-script.sh
Type=oneshot
[Install]
WantedBy=multi-user.target


After=network.target означает, что скрипт выполнится только после запуска сети.

Тип oneshot говорит, что это однократное выполнение.

А WantedBy=multi-user.target позволяет запустить скрипт при входе в основную многопользовательскую среду (то есть обычная загрузка без GUI).

Осталось активировать сервис:
sudo systemctl daemon-reexec
sudo systemctl enable boot-script.service
sudo systemctl start boot-script.service


Теперь скрипт будет выполняться каждый раз при загрузке системы. Убедиться в этом можно, посмотрев лог:
cat /var/log/boot-script.log


🔥 Удобно, если хочешь автоматизировать повседневные задачи — без crontab и лишних костылей.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍109🔥8
📂 Напоминалка для работы с XSS!

Например, Reflected XSS выполняется сразу после перехода по вредоносной ссылке, а Stored XSS сохраняется в базе и срабатывает у всех пользователей.

На картинке — 3 основных типа XSS, которые важно различать при разработке и ревью кода.

Сохрани, чтобы не забыть!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6🤝6👍3
Разрежённые файлы (sparse files) и экономия диска!

В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.

Создание файла большого размера без записи данных:
truncate -s 10G bigfile.img


Файл имеет логический размер 10G, но почти не занимает место на диске.

Проверка:
ls -lh bigfile.img
du -h bigfile.img


ls показывает логический размер файла, du — реально занятое дисковое пространство.

Создание sparse-файла через dd:
dd if=/dev/zero of=bigfile.img bs=1 count=0 seek=10G


Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.

Частичная запись данных:
printf 'DATA' | dd of=bigfile.img bs=1 seek=1G conv=notrunc


Физически будет занят только небольшой участок около 1G, остальное останется дырами.

Просмотр расположения данных:
filefrag -v bigfile.img


Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).

Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
fallocate -d bigfile.img


Точечное выбивание физических блоков с сохранением логического размера:
fallocate --punch-hole --offset 1G --length 500M --keep-size bigfile.img


Корректное копирование sparse-файлов:
cp --sparse=always src.img dst.img


Для архивов:
tar --sparse -cf backup.tar bigfile.img


Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).

🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥6🤝1
🖼️ 7 команд для работы с переменными окружения в CI/CD. Полезно для отладки пайплайнов, настройки секретов и управления конфигурациями!

В этом посте собраны методы управления Environment Variables: от простого вывода списка до маскирования данных и передачи значений между этапами сборки. Работают в GitLab CI, GitHub Actions и локальных Docker-контейнерах.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥7👍5🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Вводишь любую команду в терминале, и он по частям объясняет, что делает каждая часть. Не просто man-ка, а понятный синтакс-анализ.

Особенно кайф для тех, кто работает в Linux/DevOps/CI среде и хочет разбираться, а не наугад копипастить из StackOverflow.

📌 Оставляю ссылочку: explainshell.com

➡️ DevOps Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥14🤝9
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Awesome Linux Software — список лучших приложений, утилит и инструментов!

Здесь собран большой русскоязычный список полезного софта: консольные утилиты, системные инструменты, графические приложения, окружения рабочего стола, а также ссылки на форумы и полезные ресурсы по Linux.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤝97🔥1
Как убрать зависший процесс, дав ему шанс завершиться нормально?

Иногда процесс нужно убрать, но SIGKILL сразу не всегда правильно, можно потерять буферы, получить битые временные файлы.

Сначала отправь корректный сигнал завершения:
kill -TERM 1234


SIGTERM даёт процессу шанс закрыть файлы, сохранить состояние и выйти.

Подожди пару секунд (значение условное, часто этого достаточно):
sleep 2


Если не вышел, завершаем принудительно:
kill -KILL 1234 2>/dev/null || true


SIGKILL нельзя перехватить: ядро завершит процесс (за исключением редких случаев D-state из-за I/O).

🔥 SIGTERM - позволяет процессу корректно освободить ресурсы и закрыть файловые дескрипторы; SIGKILL используй только как fallback, когда процесс игнорирует сигналы и завис.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤝10🔥8