Что такое Infrastructure as Code

Тема дорожной карты · Terraform

Infrastructure as Code (IaC) — это практика определения, создания и управления инфраструктурой — серверами, сетями, базами данных, балансировщиками нагрузки, DNS-записями — через машинно-читаемые конфигурационные файлы, а не через ручные процессы или интерактивные UI, обеспечивая версионный контроль, peer-ревью и автоматизированное развёртывание изменений инфраструктуры. IaC-инструменты — Terraform и его open-source форк OpenTofu — используют декларативный язык HCL, где вы описываете желаемое конечное состояние, а движок инструмента определяет действия (terraform plan, terraform apply), необходимые для его достижения. Преимущества IaC включают воспроизводимость (каждое окружение строится из одного кода), обнаружение дрейфа (команда terraform plan выявляет любые внеполосные изменения) и аудируемость (история Git показывает, кто, что и почему изменил). IaC лежит в основе современных DevOps и GitOps-рабочих процессов, а экосистема провайдеров Terraform — охватывающая AWS, Azure, GCP, Kubernetes, Yandex Cloud и тысячи SaaS-платформ — делает его де-факто стандартом IaC в отрасли.

Как это работает

Что такое Infrastructure as Code относится к инфраструктуре (VM, сети, DNS, S3-бакеты) как к коду: декларативные конфиги, версионируемые в git, применяемые инструментом. Основные инструменты: Terraform / OpenTofu (cloud-agnostic, синтаксис HCL), Pulumi (настоящие языки программирования), AWS CloudFormation / Yandex Cloud Terraform provider (cloud-native). Главное обещание: одинаковый код даёт одинаковую инфру в разных средах, изменения ревьюятся + аудитятся как PR приложения.

Когда применять

IaC — с первого дня для любой cloud или VM-based инфры; ручные клики в веб-консоли не масштабируются за одного разработчика. Terraform/OpenTofu — для cross-cloud + крупнейшей экосистемы. Pulumi — если команда предпочитает настоящие языки программирования (TypeScript, Python, Go) и типизацию. ClickOps — только для самых начальных PoC; кодифицируйте до второго инженера.

Типичные ошибки

Ловушки Что такое Infrastructure as Code: смешение кликов в консоли и IaC ("config drift" — код говорит одно, реальность другое); коммит секретов в git (secrets-менеджер + tf vars); IaC-код как "только ops" без ревью (нужна та же строгость, что и для app-кода); копирование примеров из блогов без понимания state. Плохо сделанный IaC хуже, чем никакого.

Связанные понятия

Полезные ресурсы