инфраструктура как код (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.
Эта сертификация измеряет возможность выполнения следующих технических задач: проектирование и реализация процессов и коммуникаций, проектирование и реализация стратегии управления версиями, проектирование и реализация конвейеров сборки и выпуска, разработка плана безопасности и соответствия требованиям и реализация стратегии инструментирования.