TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #373 1.36K
Bash как оркестратор

Многие используют docker-compose или kubectl apply напрямую, но часто в реальной инфраструктуре требуются условные проверки, ветвления, откаты, повторные попытки. И тут bash оказывается неожиданно полезным инструментом.

▪️ Пример 1. Bash + docker-compose


#!/usr/bin/env bash
set -euo pipefail

echo "[*] Deploying database..."
docker-compose -f compose.db.yml up -d
sleep 10

echo "[*] Checking DB health..."
docker-compose exec db pg_isready -U postgres || {
echo "DB is not ready, aborting!"
exit 1
}

echo "[*] Deploying app..."
docker-compose -f compose.app.yml up -d


Скрипт запускает сначала базу, ждет, проверяет ее готовность и только потом запускает приложение. Такой контроль docker-compose сам по себе не умеет.

▪️ Пример 2. Bash + Kubernetes


#!/usr/bin/env bash
set -euo pipefail

NAMESPACE="staging"

echo "[*] Applying secrets..."
kubectl apply -f secrets.yml -n $NAMESPACE

echo "[*] Deploying app..."
kubectl apply -f app.yml -n $NAMESPACE

echo "[*] Waiting for rollout..."
kubectl rollout status deployment/myapp -n $NAMESPACE --timeout=60s || {
echo "Rollout failed, rolling back..."
kubectl rollout undo deployment/myapp -n $NAMESPACE
}


Тут добавлена проверка статуса роллаута и откат, если приложение не поднялось.

▪️ Пример 3. Управление конфигами и миграциями

Bash может быть связующим звеном:

сначала подгружаем env-настройки,
потом запускаем миграции БД,
и только если они успешны - применяем манифесты.


source .env

echo "[*] Running migrations..."
docker-compose run --rm app ./manage.py migrate || exit 1

echo "[*] Applying manifests..."
kubectl apply -f k8s/ -n $NAMESPACE


BashTex 📱 #bash
  • 👍 6
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →