Веб-версияОткрыть в Telegram
DDevOps Ready | IT

DevOps Ready | IT

✅ Высокое доверие
@devops_ready · канал · Технологии · в индексе с 2026-06-16
7 656подписчиков+83 за неделю
1 315средний охват поста
17.2%ER — охват к подписчикам
48постов за 30 дней
D
DevOps Ready | IT
Фотография
нажмите — покажем
Знали, почему cp ./src/* может тихо пропустить важные файлы? В shell звёздочка выглядит как простой способ скопировать всё содержимое папки. Например, так часто переносят конфиги, сборку или шаблон проекта: cp -r ./src/* ./dst/ Но обычный glob * не включает скрытые файлы, имена которых начинаются с точки. То есть такие файлы могут не попасть в копию: .env .gitignore .dockerignore .editorconfig Для локального проекта это неприятно, а для деплоя или Docker build может стать настоящей проблемой. Приложение уедет без .env.example, Docker получит лишний build context, а форматтеры и линтеры будут вести себя иначе. Один из надёжных вариантов использовать rsync со слешем в конце источника: rsync -a ./src/ ./dst/ Так копируется именно содержимое директории, включая dotfiles. Перед опасной синхронизацией можно сначала посмотреть план: rsync -an ./src/ ./dst/ Ключ -n включает dry-run и показывает, что будет скопировано без реальных изменений. Если хочется остаться на cp, можно явно копировать директорию целиком: cp -a ./src/. ./dst/ Точка после src означает содержимое папки, а не только элементы, которые поймал glob. В Bash есть и настройка dotglob: shopt -s dotglob cp -r ./src/* ./dst/ Но её лучше использовать осторожно, потому что она меняет поведение glob в текущем shell. Для копирования содержимого папки вместе со скрытыми файлами чаще всего удобнее rsync -a ./src/ ./dst/ или cp -a ./src/. ./dst/. ➡️ DevOps Ready | #совет
21 · 1.6K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
📂 Напоминалка по документации CI/CD-процессов! Хорошая документация помогает быстрее разбираться в процессах, снижает количество ошибок и упрощает адаптацию новых участников команды. На картинке 7 подходов к созданию понятной документации: от простого языка и визуальной структуры до реальных примеров, удобной навигации, регулярного обновления и адаптации материалов под разные роли. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
32 · 1.6K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
Шпаргалка по правам доступа в Linux! Например, chmod меняет права файла, chown назначает владельца, а chgrp задаёт группу. Символьный режим помогает точечно добавить или убрать разрешение, а числовой удобен для понятных наборов вроде 600, 644 и 755. На картинке собраны r, w и x, роли user, group и others, расшифровка ls -l, а также команды chmod, chown и chgrp с короткими примерами. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
33 · 1.6K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
Знали, чем docker compose run отличается от exec? Обе команды запускают процесс рядом с сервисом, поэтому их легко перепутать. Но работают они с разными контейнерами. docker compose exec выполняет команду внутри уже запущенного контейнера. Это удобно, когда нужно открыть shell, посмотреть переменные окружения или запустить миграцию в работающем приложении. docker compose exec api sh Команда использует тот же контейнер, его сеть, тома и текущее состояние. Если сервис не запущен, exec не сможет подключиться. docker compose run создаёт отдельный одноразовый контейнер на основе сервиса. docker compose run --rm api python manage.py migrate Такой запуск хорош для задач, которые не должны трогать основной процесс. После --rm временный контейнер будет удалён. Важно помнить, что run по умолчанию не публикует порты сервиса. Если нужно открыть порт для отладки, его надо указать отдельно. docker compose run --rm --service-ports api Для проверки живого контейнера выбирай exec. Для отдельной команды, миграции или одноразового job выбирай run. ➡️ DevOps Ready | #совет
13 · 1.5K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
Шпаргалка по сигналам и остановке процессов в Linux! На картинке собраны основные сигналы Unix, команды kill, killall, pgrep и pkill, а также полезные ключи для поиска по полной командной строке. Например, kill по умолчанию отправляет SIGTERM, pgrep помогает найти PID по имени, а pkill сочетает поиск процесса и отправку сигнала в одной команде. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
24 · 1.5K ·
DevOps Ready | IT
Делаем проверяемый бэкап PostgreSQL! Резервная копия полезна только тогда, когда её можно восстановить. Поэтому после pg_dump стоит сразу проверить содержимое архива и периодически поднимать базу из этого файла. Сначала сохраняем параметры подключения вне команды. export PGHOST=db.internal export PGDATABASE=app export PGUSER=backup Формат custom удобен для восстановления, потому что pg_restore умеет показать состав архива и выбирать объекты. Имя с датой помогает не перезаписать вчерашний дамп. mkdir -p backups pg_dump --format=custom --no-owner \ --file "backups/app-$(date +%F).dump" Проверяем архив до того, как объявлять задачу успешной. Команда выведет таблицы, схемы и другие объекты без реального восстановления. pg_restore --list backups/app-$(date +%F).dump test ${PIPESTATUS[0]} -eq 0 Для теста создаём отдельную базу и восстанавливаем туда копию. createdb app_restore pg_restore --dbname=app_restore backups/app-$(date +%F).dump Автоматизация должна логировать дату, размер файла и результат проверки. Ещё полезно настроить хранение нескольких копий вне основного сервера, иначе поломка диска уничтожит и базу, и бэкап одновременно. ➡️ DevOps Ready | #практика
27 · 1.5K ·
D
Фотография
нажмите — покажем
Знали, почему grep может завершить shell-скрипт без ошибки в самой команде? grep возвращает разные коды завершения. Ноль означает, что совпадение найдено, единица означает, что совпадений нет, а код больше единицы говорит о реальной ошибке чтения. В обычном терминале отсутствие строки часто нормально: grep -q "READY" status.txt Но в скрипте с set -e код 1 может прервать выполнение. Это неприятно, когда отсутствие совпадения является ожидаемой веткой, а не аварией. Проверку лучше писать прямо в условии: if grep -q "READY" status.txt; then deploy fi Команда внутри if не остановит скрипт из-за set -e. Ветку else можно использовать для понятного сообщения или обычного пропуска шага. Если важно отличить отсутствие данных от настоящей ошибки, сохраните exit code: grep -q "READY" status.txt code=$? Теперь код 1 можно обработать спокойно, а остальные значения отправить в лог как проблему: if [ "$code" -gt 1 ]; then echo "grep failed" >&2 exit "$code" fi Такой подход особенно полезен для health-check, поиска строки в логах и проверок перед deploy. Отсутствие совпадения становится управляемым результатом, а не случайной причиной падения автоматизации. ➡️ DevOps Ready | #совет
14 · 1.8K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
📂 Напоминалка по построению observability-матрицы для проекта! Наблюдаемость помогает понимать состояние сервиса, быстрее находить проблемы и не тонуть в лишних данных. На картинке показан простой подход: определить ключевые вопросы, выбрать важные метрики, подключить источники данных, настроить алерты и дашборды, документировать правила и регулярно улучшать матрицу с учётом изменений в проекте. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
26 · 1.7K ·
D
DevOps Ready | IT
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Разбираем SSH 7 флагов для подключения и туннелей! SSH нужен не только для входа на сервер. Он помогает быстро проверить доступ, выбрать ключ, ограничить ожидание, пробросить локальный или удалённый порт и поднять безопасный туннель без интерактивной оболочки. ➡️ DevOps Ready | #шпора
27 · 1.4K ·
D
DevOps Ready | IT
Видео
0718(28).mp4 · 32.0 МБ · нажмите — покажем
DevOps Daily собирает материалы по инфраструктуре! На сайте есть разборы Docker, Kubernetes, Terraform, Linux, сетей и CI/CD. Отдельные разделы посвящены симуляторам, упражнениям, тестам и инструментам для повседневной работы. Можно пройти сценарий с DNS, потренироваться в Kubernetes, открыть упражнение по Nginx или проверить себя на вопросах по Git. Материалы разнесены по темам, поэтому легко выбрать конкретную задачу и постепенно углубиться в неё. Оставляю ссылочку на DevOps Daily ➡️ DevOps Ready | #ресурс
54 · 1.3K ·
DevOps Ready | IT
Фотография
нажмите — покажем
Шпаргалка по жизненному циклу Pod в Kubernetes! На картинке показано, как запрос проходит через API server, как scheduler выбирает узел и что kubelet делает перед запуском контейнеров. Отдельно разобраны фазы Pod и последовательность его завершения. Например, Pending означает, что Pod принят кластером, но контейнеры ещё не готовы к запуску. Если он долго остаётся в этой фазе, полезно проверить события, доступность образа, ресурсы узлов и ограничения планирования. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
29 · 1.1K ·
D
Проверяем итоговую конфигурацию Docker Compose перед запуском! Когда проект использует базовый compose.yaml и отдельный файл для production, легко ошибиться с портом, переменной окружения или переопределением сервиса. Docker Compose умеет показать итоговую конфигурацию ещё до запуска контейнеров. Пусть основной файл задаёт приложение, а второй меняет образ и параметры окружения. Посмотрим объединённый результат: docker compose -f compose.yaml -f compose.prod.yaml config Для проверки синтаксиса в CI не нужен длинный вывод. Достаточно тихого режима: docker compose -f compose.yaml -f compose.prod.yaml config --quiet Если конфигурация некорректна, команда завершится с ошибкой. Так можно остановить pipeline до попытки собрать или запустить контейнеры. Отдельно посмотрим, какие сервисы и образы Compose получил после объединения: docker compose -f compose.yaml -f compose.prod.yaml config --services docker compose -f compose.yaml -f compose.prod.yaml config --images Это помогает заметить, что нужный сервис пропал из файла или production по-прежнему ссылается на старый тег образа. Переменные подстановки можно проверить отдельно: docker compose -f compose.yaml -f compose.prod.yaml config --environment Это особенно полезно после изменений в нескольких Compose-файлах или окружениях. ➡️ DevOps Ready | #практика
20 · 1K ·
DevOps Ready | IT
Фотография
нажмите — покажем
Этот инструмент поможет поять из чего на самом деле состоит Docker-образ! Он содержит терминальную утилиту для просмотра слоёв Docker и OCI-образов. Можно открыть конкретный слой, увидеть добавленные и удалённые файлы и найти данные, которые занимают место в образе без пользы. Оставляю ссылочку на GitHub ➡️ DevOps Ready | #репозиторий
31 · 963 ·
Фотография
нажмите — покажем
⚡️5 фундаментальных курсов по ИБ по цене одного Это предложение для тех, кто готов войти в новую профессию прямо сейчас! 🔥Пакет курсов за 50 000 ₽ вместо 250 000 ₽: ▪️ Linux CyberPunk - обычная цена 49 500 ₽ (+ Курс идет с официальным дипломом системного администратора!) ▪️ SQL для хакера - обычная цена 15 000 ₽ ▪️ HackerPoint - обычная цена ~70 000 ₽ ▪️ HackerPoint (Blue vs Red Team) - обычная цена 43 500 ₽ ▪️ AI-помощники на Python - обычная цена 71 500 ₽ Вы экономите 200 000 ₽ и получаете полную базу: от работы с терминалом и базами данных до разработки ИИ-агентов и взлома систем. 🔒 Квота: набор на программу ограничен по количеству мест. 🦔Отправь промокод DevOps в чат с менеджером, чтобы закрепить за собой скидку и узнать подробности: 👉@cyacademy_support
6 · 957 ·
D
Фотография
нажмите — покажем
Знали, почему настройки systemd-сервиса лучше менять через systemctl edit? Допустим, приложение установлено из пакета, а вам нужно настроить его перезапуск после сбоя. Можно открыть исходный unit-файл и дописать нужные строки, но при обновлении пакета изменения легко потерять. Сначала посмотрите, из каких файлов сейчас складывается конфигурация сервиса: systemctl cat myapp.service Команда покажет основной unit и уже существующие дополнения. Так проще заметить, что нужная настройка могла быть задана раньше в другом файле. Для своей настройки откройте редактор override-файла: sudo systemctl edit myapp.service Добавьте в открывшийся файл только изменяемые параметры: [Service] Restart=on-failure RestartSec=5s По умолчанию systemctl edit создаёт отдельный override.conf рядом с unit-файлом в каталоге myapp.service.d. Исходный unit при этом остаётся нетронутым. Проверьте итоговую конфигурацию и запустите сервис заново в подходящий момент: systemctl cat myapp.service sudo systemctl restart myapp.service После перезапуска убедитесь, что сервис жив и настройка применена: systemctl status myapp.service systemctl show myapp.service -p Restart Если нужно отменить изменение, сначала проверьте все локальные дополнения. Команда systemctl revert удаляет не только этот override, а все локальные переопределения указанного unit, поэтому использовать её вслепую опасно. ➡️ DevOps Ready | #совет
17 · 1K ·
DevOps Ready | IT
Видео
0718(30).mp4 · 14.9 МБ · нажмите — покажем
DigitalOcean Community собирает подробные руководства по Linux! В разделе Linux Basics есть материалы про командную строку, права доступа, пользователей, процессы, сеть и администрирование сервера. Пошаговые статьи дают команды, поясняют результат и помогают пройти тему от основы до конкретной настройки. Оставляю ссылочку на DigitalOcean Community ➡️ DevOps Ready | #ресурс
24 · 778 ·
Фотография
нажмите — покажем
Как оплачивать зарубежные сервисы в 2026 году? Можно бегать между посредниками и бояться блокировок после оплаты, а можно выпустить международную карту Lumio Pay и пользоваться любимыми сервисами без рисков. — выпуск карты за 2 минуты — лучший курс пополнения на рынке (у конкурентов на 20% выше) — пополнение рублями или криптой — чистые BIN карт, оплата без риска блокировок Пока все ищут идеальное решение, оно у тебя перед глазами: @LumioPay
2 · 662 ·
D
Изоляция процессов в Linux через Unshare без Docker и тяжелых утилит. Мы научимся использовать системный вызов unshare для создания изолированного пространства имен (namespaces), что является фундаментом контейнеризации в Linux. Это позволяет запустить процесс с собственной таблицей хостов или файловой системой, не влияя на основную ОС. Техника незаменима для безопасного тестирования скриптов и понимания того, как работают Docker и Podman изнутри. Сначала создадим изолированную среду с собственной сетевой петлей и новым пространством имен для имени хоста: sudo unshare --fork --uts --net bash Теперь вы находитесь внутри изолированного процесса, где изменения параметров сети не коснутся основной системы. Внутри новой оболочки зададим уникальное имя хоста, чтобы убедиться в полной изоляции UTS namespace: hostname sandbox-env && hostname Имя хоста изменится только для этой сессии, в то время как основная система сохранит прежнее название. Для полной демонстрации сетевой изоляции попробуем поднять интерфейс, который будет существовать только в этом пространстве: ip link set lo up && ip addr show lo Внутри этого пространства вы увидите чистый сетевой стек, полностью отделенный от физических интерфейсов сервера. Проверка работоспособности: hostname Ожидаемый вывод: ваше старое имя хоста (подтверждает, что изоляция работает). Использование namespaces напрямую через unshare — это мощный способ отладки и запуска недоверенных приложений с минимальным оверхедом. Помните, что для некоторых флагов изоляции (например, монтирования) требуются права суперпользователя или настройка User Namespaces. ➡️ DevOps Ready | #практика
12 · 544 ·
DevOps Ready | IT
Фотография
нажмите — покажем
📂 Напоминалка по единообразию Dockerfile в команде! Единые правила помогают сократить количество ошибок, упростить ревью и сделать сборку сервисов предсказуемой. На картинке 7 шагов: от определения базовых стандартов и общего шаблона Dockerfile до автоматических проверок в CI, использования общих образов, обучения команды и регулярного улучшения процесса. Такой подход помогает быстрее подключать новые проекты и поддерживать одинаковые практики во всей команде. Сохрани, чтобы не потерять! ➡️ DevOps Ready | #ресурс
25 · 750 ·
Фотография
нажмите — покажем
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем» В программе только важные аспекты: — troubleshooting Docker и образов — диагностика сетевых проблем — настройка readiness/liveness probes — отладка pod’ов, деплоев и ingress — анализ логов контейнеров и кластера — разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам 48 часов доступен со скидкой 25% ↗️ Пройти курс на Stepik
7 · 708 ·
D
Фотография
нажмите — покажем
Знали, почему jq без -e может пропустить неготовый сервис? Допустим, проверка здоровья возвращает JSON с признаком готовности: {"ready": false} В скрипте хочется прочитать поле и продолжить работу только после готовности. Кажется логичным проверить статус команды: jq '.ready' health.json echo "$?" jq напечатает false, но сама команда успешно обработала JSON и завершится с кодом 0. Если использовать её напрямую в if, скрипт ошибочно пойдёт по ветке успеха. Для проверки результата добавьте -e: jq -e '.ready' health.json >/dev/null echo "$?" Теперь false или null дают ненулевой код. Но любой другой результат, в том числе число 0 или непустая строка, считается успешным. Поэтому для строгой проверки булевого поля лучше сравнить его с true: if jq -e '.ready == true' health.json >/dev/null; then echo "service is ready" else echo "service is not ready" >&2 exit 1 fi Если поле отсутствует, выражение тоже вернёт false. А если JSON сломан, jq завершится с ошибкой разбора, и скрипт не примет его за успешный ответ. ➡️ DevOps Ready | #совет
9 · 622 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем