Что такое инфраструктура как код (IaC)?

Инфраструктура как код (IaC) использует методологию DevOps и управление версиями с описательной моделью для определения и развертывания инфраструктуры, таких как сети, виртуальные машины, подсистемы балансировки нагрузки и топологии подключений. Так же, как и тот же исходный код всегда создает один двоичный файл, модель IaC создает одну и ту же среду при каждом развертывании.

Diagram of infrastructure as code defining the environment in a versioned file.

IaC — это ключевая практика DevOps и компонент непрерывной доставки. С помощью IaC команды DevOps могут работать вместе с единым набором методик и инструментов для доставки приложений и их вспомогательной инфраструктуры быстро и надежно в масштабе.

Избегайте ручной настройки для обеспечения согласованности

IaC развивалась для решения проблемы смещения среды в конвейерах выпуска. Без IaC команды должны поддерживать параметры среды развертывания по отдельности. С течением времени каждая среда становится "снежинкой", уникальной конфигурацией, которая не может быть воспроизведена автоматически. Несоответствие между средами может привести к проблемам с развертыванием. Администрирование инфраструктуры и обслуживание включают вручную процессы, которые подвержены ошибкам и трудно отслеживать.

IaC избегает ручной настройки и обеспечивает согласованность путем представления требуемых состояний среды с помощью хорошо документированного кода в таких форматах, как JSON. Развертывания инфраструктуры с помощью модели IaC являются повторяемыми и предотвращают проблемы во время выполнения, вызванные смещением конфигурации или отсутствием зависимостей. Конвейеры выпуска выполняют описания среды и модели конфигурации версий для настройки целевых сред. Чтобы внести изменения, команда редактирует источник, а не целевой объект.

Идемпотенс, способность данной операции всегда производить один и тот же результат, является важным принципом IaC. Команда развертывания всегда задает целевую среду в одну и ту же конфигурацию независимо от начального состояния среды. Идемпотентность достигается автоматически путем автоматической настройки существующего целевого объекта или путем отключения карта существующего целевого объекта и повторного создания новой среды.

Полезные инструменты

Доставка стабильных тестовых сред быстро в масштабе

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

Использование декларативных файлов определения

Если это возможно, IaC должен использовать декларативные файлы определения. Файл определения описывает компоненты и конфигурацию, необходимые для среды, но не обязательно, как достичь этой конфигурации. Например, файл может определить необходимую версию сервера и конфигурацию, но не указать процесс установки сервера и конфигурации. Эта абстракция позволяет более гибко использовать оптимизированные методы поставщиков инфраструктуры. Декларативные определения также помогают сократить технический долг по поддержанию императивного кода, например скриптов развертывания, которые могут накапливаться с течением времени.

Для декларативного IaC нет стандартного синтаксиса. Синтаксис описания IaC обычно зависит от требований целевой платформы. Разные платформы поддерживают форматы файлов, такие как YAML, JSON и XML.

Развертывание IaC в Azure

Azure обеспечивает встроенную поддержку IaC с помощью модели Azure Resource Manager . Teams может определять декларативные шаблоны ARM или Bicep , которые указывают инфраструктуру, необходимую для развертывания решений.

Сторонние платформы, такие как Terraform, Ansible, Chef и Pulumi, также поддерживают IaC для управления автоматизированной инфраструктурой.