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

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

Ответ

В DevOps автоматизация строится на комбинации скриптовых языков и специализированных инструментов, образующих конвейер от кода до продакшена.

1. Языки для скриптования и утилитарных задач:

  • Bash/POSIX-shell: Для автоматизации на уровне ОС, оберток, быстрых деплоев.
    # Пример: скрипт проверки дискового пространства перед деплоем
    THRESHOLD=90
    USAGE=$(df /var/lib/docker | awk 'NR==2 {print $5}' | sed 's/%//')
    if [ $USAGE -gt $THRESHOLD ]; then
        echo "ERROR: Disk usage is at ${USAGE}%" >&2
        exit 1
    fi
  • Python: Для сложной логики, работы с API (например, облачными), обработки данных. Широко используется благодаря богатой экосистеме библиотек (boto3 для AWS, requests, paramiko).

2. Специализированные инструменты (Infrastructure as Code - IaC):

  • Конфигурационное управление: Ansible (агентless, на YAML). Используется для настройки серверов, установки пакетов, управления конфигами.
    # Пример Ansible task для установки Nginx
    - name: Ensure Nginx is installed and running
      apt:
        name: nginx
        state: present
      notify: restart nginx
  • Оркестрация инфраструктуры: Terraform (на HCL). Для декларативного создания и управления облачными ресурсами (VM, сети, БД).
    # Пример Terraform для создания AWS EC2
    resource "aws_instance" "app_server" {
      ami           = "ami-0c55b159cbfafe1f0"
      instance_type = "t2.micro"
      tags = {
        Name = "ExampleAppServerInstance"
      }
    }
  • CI/CD (Continuous Integration/Continuous Delivery): Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD. Автоматизируют сборку, тестирование и развертывание приложений.
  • Оркестрация контейнеров: Kubernetes (K8s) для управления контейнеризированными приложениями, их масштабирования и обеспечения отказоустойчивости.
  • Мониторинг и логирование: Prometheus (сбор метрик), Grafana (визуализация), ELK Stack (Elasticsearch, Logstash, Kibana) или Loki для агрегации логов.

Стандартный стек: Комбинация Terraform для инфраструктуры, Ansible для начальной настройки, Kubernetes для оркестрации приложений и GitLab CI для сборки и доставки контейнеров в кластер.