Что такое Infrastructure as Code (IaC)?
Infrastructure as Code — подход, при котором серверы, сети, базы и права доступа описываются в конфигурационных файлах и создаются автоматически по этому описанию, вместо ручной настройки через веб-интерфейс облака.
Инфраструктура, собранная руками, со временем расходится: тестовое окружение отличается от продакшена, а точный порядок действий помнит один человек. Описание в коде убирает эту неопределённость — окружение можно пересоздать с нуля в любой момент.
Поскольку конфигурация — это файлы, к ней применимы все привычные практики разработки: хранение в Git, история изменений, код-ревью перед применением, автоматическая проверка в CI/CD. Инструменты — Terraform, Ansible, Pulumi и аналоги от облачных провайдеров.
Где применяется
Подход применяют везде, где инфраструктура сложнее одного сервера. Описания лежат в том же репозитории, что и код приложения, проходят ревью и попадают в облако через сборочный конвейер — так же, как обычные правки в программе.
Практическая выгода видна в трёх ситуациях: поднять идентичный тестовый стенд, восстановить всё после аварии и понять, кто и зачем изменил настройку месяц назад. При ручной настройке через веб-консоль ни один из этих вопросов не имеет быстрого ответа.
Пример
Команде нужен отдельный стенд для нагрузочного тестирования — точная копия продакшена. С описанной инфраструктурой это одна команда и пятнадцать минут ожидания; после тестов стенд удаляется целиком, и оплата прекращается.
Частые вопросы
Чем это лучше настройки через веб-консоль облака?
Повторяемостью и историей. Описание лежит в системе контроля версий: видно, кто и что менял, можно откатиться и создать такое же окружение заново. Ручные клики нигде не фиксируются, и через полгода никто не помнит, почему настройка именно такая.
Чем отличаются декларативный и императивный подходы?
Декларативный описывает желаемый результат, а инструмент сам вычисляет шаги — так работают Terraform и Kubernetes. Императивный задаёт последовательность действий, как обычный скрипт. Первый устойчивее: повторный запуск не ломает то, что уже создано.
Какие инструменты используют для IaC?
Terraform и OpenTofu для создания облачных ресурсов, Ansible для настройки серверов, Pulumi для описания инфраструктуры обычным языком программирования, CloudFormation в экосистеме AWS. Часто их комбинируют: один создаёт ресурсы, другой настраивает их содержимое.
Где хранить пароли и ключи при таком подходе?
Только не в самих файлах конфигурации: они попадают в репозиторий и остаются в истории навсегда. Секреты держат в отдельных хранилищах — Vault, менеджерах секретов облака, защищённых переменных конвейера — и подставляют в момент применения.