Поделиться через


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

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

схема инфраструктуры в виде кода, определяющего среду в файле с версиями.

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. Команды могут определять декларативные шаблоны ARM с помощью синтаксиса JSON или Bicep, чтобы указать инфраструктуру, необходимую для развертывания решений. Также доступны сторонние решения, такие как Terraform через конкретных поставщиков Azure.