Какие типы скриптов используются для автоматизации в DevOps?

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

Ответ

В DevOps для автоматизации рутинных задач используются скрипты на различных языках.

1. Bash/Shell-скрипты:

  • Назначение: Автоматизация задач ОС, деплой, мониторинг, работа с файлами.
  • Пример (резервное копирование и деплой):

    #!/bin/bash
    set -euo pipefail # Строгий режим: выход при ошибке, проверка неустановленных переменных
    
    APP_DIR="/opt/myapp"
    BACKUP_DIR="/backup"
    TIMESTAMP=$(date +'%Y%m%d_%H%M%S')
    
    # Создание резервной копии
    tar -czf "$BACKUP_DIR/app_$TIMESTAMP.tar.gz" "$APP_DIR"
    
    # Деплой новой версии
    scp -r ./build/* deploy-user@prod-server:$APP_DIR/
    ssh deploy-user@prod-server "systemctl restart myapp"
    
    echo "Deployment completed successfully."

2. Python-скрипты:

  • Назначение: Сложная логика, работа с API (AWS, Kubernetes), парсинг JSON/XML/YAML, обработка данных.
  • Пример (проверка здоровья эндпоинта):

    import requests
    import sys
    
    response = requests.get('http://app:8080/health', timeout=5)
    if response.status_code == 200:
        print('Service is healthy')
        sys.exit(0)
    else:
        print(f'Health check failed: {response.status_code}')
        sys.exit(1)

3. Groovy-скрипты:

  • Назначение: Основной язык для Jenkins Pipeline (файл Jenkinsfile).
  • Пример (Declarative Pipeline):
    pipeline {
        agent any
        stages {
            stage('Build') {
                steps {
                    sh 'mvn clean package'
                }
            }
            stage('Test') {
                steps {
                    sh 'mvn test'
                }
            }
        }
    }

Общие принципы: обработка ошибок, логирование, параметризация, безопасность (хранение секретов).