Ответ
Configuration drift (конфигурационный дрейф) — это постепенное расхождение между фактическим состоянием инфраструктуры (серверов, сетевых правил, конфигураций ПО) и её желаемым состоянием, описанным в декларативном коде (Infrastructure as Code, IaC). Это одна из ключевых проблем, которую решает DevOps-подход.
Как возникает дрейф на практике:
- Ручные "быстрые фиксы" на продакшене: "Зайти по SSH и перезапустить службу, попутно изменив параметр в конфиге."
- Автоматические обновления ОС или ПО, не отраженные в коде инфраструктуры.
- Действия других команд или систем, влияющие на общую инфраструктуру.
- Ошибки в скриптах или CI/CD, которые вносят изменения, не соответствующие основному коду (Terraform, Ansible).
Пример: В Terraform описана security group, разрешающая порт 22 только с офисного IP. Инженер вручную через AWS Console добавляет правило для своего домашнего IP для удобства и забывает удалить. Состояние инфраструктуры (AWS) теперь не соответствует коду (Terraform).
Стратегии борьбы с дрейфом:
- Строгий принцип "Everything as Code": Все изменения в инфраструктуре, конфигурациях и политиках должны вноситься через систему контроля версий (Git) и применяться через CI/CD.
- Регулярное применение IaC: Плановое выполнение
terraform applyилиansible-playbookдля приведения инфраструктуры к желаемому состоянию. - Использование детекторов дрейфа: Инструменты вроде
driftctlдля Terraform илиaws configдля постоянного аудита.# Проверка дрейфа в Terraform (возвращает код 2 при наличии изменений) terraform plan -detailed-exitcode - Immutable Infrastructure: Подход, при котором вместо изменения существующих серверов разворачиваются новые, полностью сконфигурированные из образа (AMI, Docker image), а старые уничтожаются. Это устраняет саму возможность дрейфа на уровне сервера.
- Запрет прямого доступа (SSH/RDP) к продакшен-серверам или строгий аудит таких сессий.
Последствия неконтролируемого дрейфа: невоспроизводимость окружений, сложность отладки, проблемы с безопасностью и нарушение compliance-требований.