Что такое инфраструктура как код (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 . Teams может определять декларативные шаблоны ARM или Bicep , которые указывают инфраструктуру, необходимую для развертывания решений.
Сторонние платформы, такие как Terraform, Ansible, Chef и Pulumi, также поддерживают IaC для управления автоматизированной инфраструктурой.