Что такое инфраструктура как код (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.