Ответ
В 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 для сборки и доставки контейнеров в кластер.