На каких языках пишешь скрипты для автоматизации в DevOps?

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

Ответ

В DevOps-практике я использую несколько языков в зависимости от задачи, окружения и требуемой сложности.

Основные языки и их применение:

  • Bash/Shell:

    • Для чего: Автоматизация рутинных операций в Linux-окружении, написание обёрток для CLI-утилит, простые скрипты развёртывания, логирование, работа с файлами и процессами.
    • Пример (очистка старых логов):
      #!/bin/bash
      LOG_DIR="/var/log/myapp"
      RETENTION_DAYS=30
      echo "Cleaning logs older than $RETENTION_DAYS days in $LOG_DIR"
      find "$LOG_DIR" -name "*.log" -type f -mtime +$RETENTION_DAYS -delete
  • Python:

    • Для чего: Сложная логика, взаимодействие с API (AWS, Kubernetes, GitLab), обработка данных (логи, метрики), создание инструментов для команд, работа с YAML/JSON конфигурациями.
    • Пример (проверка статуса pods в Kubernetes через API):

      import requests
      import json
      
      api_server = "https://kube-api.example.com"
      token = "<your-token>"
      namespace = "production"
      
      headers = {"Authorization": f"Bearer {token}"}
      response = requests.get(
          f"{api_server}/api/v1/namespaces/{namespace}/pods",
          headers=headers,
          verify="/path/to/ca.crt"
      )
      pods = response.json()
      for pod in pods['items']:
          print(f"{pod['metadata']['name']}: {pod['status']['phase']}")
  • PowerShell:

    • Для чего: Автоматизация в Windows-окружении, управление Active Directory, работа с облачными сервисами Microsoft (Azure) через модули.

Критерии выбора: Bash — для быстрых, одноразовых задач в Linux. Python — для сложных, поддерживаемых скриптов и инструментов, требующих библиотек. PowerShell — для экосистемы Windows/Azure.