Для каких задач используют Bash-скрипты в DevOps?

«Для каких задач используют Bash-скрипты в DevOps?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Bash-скрипты — это фундаментальный инструмент автоматизации в DevOps для выполнения рутинных операций на Unix-подобных системах (Linux, macOS).

Типичные сценарии использования:

  • Автоматизация сборки и деплоя: Запуск сборщиков (Maven, Gradle), копирование артефактов.
  • Обработка файлов и логов: Поиск, фильтрация (grep), преобразование (awk, sed), архивация.
  • Мониторинг и управление процессами: Проверка статуса служб, перезапуск упавших процессов, сбор метрик.
  • Управление инфраструктурой: Взаимодействие с облачными CLI (AWS CLI, gcloud), оркестрация контейнеров (Docker/Podman).

Пример скрипта для сборки и деплоя Java-приложения:

#!/bin/bash
# Strict mode для отлова ошибок
set -euo pipefail

PROJECT_DIR="/opt/myapp"
DEPLOY_DIR="/var/www/app"

echo "Начинаем сборку проекта..."
cd "$PROJECT_DIR"

# Запуск сборки с помощью Maven
mvn clean package -DskipTests

# Поиск и копирование JAR-артефакта
JAR_FILE=$(find target -name "*.jar" -type f | head -n 1)
if [[ -z "$JAR_FILE" ]]; then
    echo "Ошибка: JAR-файл не найден!" >&2
    exit 1
fi

cp "$JAR_FILE" "$DEPLOY_DIR/app.jar"
echo "Деплой успешно завершён: $DEPLOY_DIR/app.jar"

# Перезапуск системного сервиса
sudo systemctl restart myapp-service

Важные концепции: работа с переменными, аргументами скрипта ($1, $@), условиями (if-else), циклами (for, while), функциями и кодами возврата ($?).