Prog Academy
RU UA
DevOps и облака

Что такое Infrastructure as Code (IaC)?

Infrastructure as Code — подход, при котором серверы, сети, базы и права доступа описываются в конфигурационных файлах и создаются автоматически по этому описанию, вместо ручной настройки через веб-интерфейс облака.

Инфраструктура, собранная руками, со временем расходится: тестовое окружение отличается от продакшена, а точный порядок действий помнит один человек. Описание в коде убирает эту неопределённость — окружение можно пересоздать с нуля в любой момент.

Поскольку конфигурация — это файлы, к ней применимы все привычные практики разработки: хранение в Git, история изменений, код-ревью перед применением, автоматическая проверка в CI/CD. Инструменты — Terraform, Ansible, Pulumi и аналоги от облачных провайдеров.

Где применяется

Подход применяют везде, где инфраструктура сложнее одного сервера. Описания лежат в том же репозитории, что и код приложения, проходят ревью и попадают в облако через сборочный конвейер — так же, как обычные правки в программе.

Практическая выгода видна в трёх ситуациях: поднять идентичный тестовый стенд, восстановить всё после аварии и понять, кто и зачем изменил настройку месяц назад. При ручной настройке через веб-консоль ни один из этих вопросов не имеет быстрого ответа.

Пример

Команде нужен отдельный стенд для нагрузочного тестирования — точная копия продакшена. С описанной инфраструктурой это одна команда и пятнадцать минут ожидания; после тестов стенд удаляется целиком, и оплата прекращается.

Частые вопросы

Чем это лучше настройки через веб-консоль облака?

Повторяемостью и историей. Описание лежит в системе контроля версий: видно, кто и что менял, можно откатиться и создать такое же окружение заново. Ручные клики нигде не фиксируются, и через полгода никто не помнит, почему настройка именно такая.

Чем отличаются декларативный и императивный подходы?

Декларативный описывает желаемый результат, а инструмент сам вычисляет шаги — так работают Terraform и Kubernetes. Императивный задаёт последовательность действий, как обычный скрипт. Первый устойчивее: повторный запуск не ломает то, что уже создано.

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

Terraform и OpenTofu для создания облачных ресурсов, Ansible для настройки серверов, Pulumi для описания инфраструктуры обычным языком программирования, CloudFormation в экосистеме AWS. Часто их комбинируют: один создаёт ресурсы, другой настраивает их содержимое.

Где хранить пароли и ключи при таком подходе?

Только не в самих файлах конфигурации: они попадают в репозиторий и остаются в истории навсегда. Секреты держат в отдельных хранилищах — Vault, менеджерах секретов облака, защищённых переменных конвейера — и подставляют в момент применения.

Связанные термины