Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Инфраструктура как код (IaC) предлагает программный метод для развертывания ресурсов Azure и управления ими. Она преобразует процесс подготовки инфраструктуры из ручного и ошибкоопасного в автоматизированные, согласованные и повторяющиеся развертывания.
IaC помогает уменьшить смещение конфигурации, свести к минимуму ошибки развертывания и установить управление версиями во всей инфраструктуре Azure. Его программный характер позволяет командам отслеживать изменения, откатывать развертывания и поддерживать согласованность сред на этапах разработки, тестирования и эксплуатации.
Выбор инфраструктуры в качестве средств кода
Выбор между собственными и сторонними инструментами влияет на возможности развертывания, временную шкалу поддержки и интеграцию с существующим стеком технологий.
Выберите шаблоны Bicep и ARM для сред Azure-first. Используйте шаблоны Bicep или Azure Resource Manager (ARM), когда ваша организация фокусируется в основном на службах Azure. Эти средства обычно поддерживают новые функции Azure раньше сторонних вариантов и хорошо интегрируются с Azure DevOps, GitHub Actions и другими платформами разработки Майкрософт. Если ваша команда уже использует шаблоны ARM, миграция на Bicep предлагает улучшенный синтаксис при сохранении совместимости. Для новых развертываний Azure предпочтите Bicep вместо шаблонов ARM. Bicep предоставляет те же возможности, что и шаблоны ARM с упрощенным синтаксисом, упрощающим чтение, запись и обслуживание.
Выберите Terraform для мультиоблачных или существующих сред Terraform. Используйте Terraform , если ваша организация работает в нескольких облачных поставщиках, таких как AWS или Google Cloud, или если у вас уже есть опыт и модули Terraform. Хотя Terraform хорошо поддерживает Azure через поставщика AzureRM, новые функции Azure могут занять больше времени, чтобы стать доступными. Модуль Terraform посадочных зон Azure предоставляет готовые для предприятия шаблоны для развертывания фундаментальной инфраструктуры.
Ознакомьтесь с рекомендациями по управлению конфигурацией для конкретного инструмента. Каждое средство обрабатывает смещение конфигурации и изменения вне диапазона по-разному. Bicep не поддерживает состояние, но обнаружение отклонений может выполняться с помощью What-If и Azure Policy. Terraform требует импорта изменений вне диапазона в файл состояния и обновления кода конфигурации. Дополнительные сведения см. в разделе "Управление смещением конфигурации".
Используйте императивные средства для конкретных сценариев автоматизации. Хотя декларативные инструменты IaC, такие как Bicep и Terraform, должны быть основным подходом, Azure CLI и Azure PowerShell полезны для пользовательских сценариев, сложных рабочих процессов с условной логикой или интеграции с процедурными системами автоматизации. Эти средства дополняют декларативные шаблоны, предлагая гибкие варианты скриптов.
Использование инфраструктуры в качестве модулей кода
Модули IaC — это автономные единицы кода, определяющие конкретный набор связанных ресурсов, которые необходимо развернуть вместе. Этот подход способствует повторному использованию кода, упрощению обслуживания и позволяет командам совместно использовать проверенные шаблоны в развертываниях. Цель состоит в том, чтобы избежать дублирования работы или создания нескольких шаблонов для аналогичных задач. Разработка модулей Bicep или модулей Terraform , которые разбивают сложные шаблоны на более мелкие, более управляемые наборы кода. Каждый модуль должен сосредоточиться на конкретной задаче и содержать ресурсы, предназначенные для развертывания вместе.
Проектирование модулей Bicep
Bicep поддерживает модульную разработку, позволяя создавать и повторно использовать модули. Модули — это автономные единицы, определяющие набор связанных ресурсов. После создания модуль можно вызвать из любого другого шаблона Bicep, повышая повторное использование и согласованность в развертываниях. Хорошо разработанный модуль Bicep обычно инкапсулирует несколько ресурсов, логически принадлежащих друг другу. Модули Bicep обычно используют:
- Параметры для приема значений из вызывающего модуля.
- Выходные значения для возврата результатов в вызывающий модуль.
- Ресурсы: определение одного или нескольких объектов инфраструктуры для управления модулем.
Проектирование модулей Terraform
Модули Terraform позволяют упорядочивать и повторно использовать код инфраструктуры. Каждая конфигурация Terraform включает корневой модуль, состоящий из ресурсов, определенных в .tf файлах. Модули могут вызывать другие модули, включая дочерние модули, и повторно использовать их в конфигурациях. К общим элементам относятся:
- Входные переменные для приема значений из вызывающего модуля.
- Выходные значения для возврата результатов в вызывающий модуль.
- Ресурсы для определения одного или нескольких объектов инфраструктуры для управления модулем.
Создание стратегий публикации и распространения модулей
Стратегия распространения модулей влияет на совместную работу, управление версиями и надежность развертывания. Используйте общедоступные реестры, когда модули соответствуют вашим требованиям и поддерживаются доверенными поставщиками. Для Bicep и Terraform проверенные модули Azure предлагают проверенные и поддерживаемые реализации, согласованные с рекомендациями Azure. Всегда проверяйте обязательства по поддержке и обслуживанию перед использованием внешних модулей в рабочей среде.
Публикация модуля Bicep
Вы можете публиковать и совместно использовать модули Bicep с помощью нескольких методов:
- Общедоступный реестр, размещенный в реестре контейнеров Майкрософт (MCR).
- Частный реестр с использованием Azure Container Registry (ACR) и конвейеров CI/CD
- Спецификации шаблонов для хранения версий шаблонов ARM, скомпилированных из шаблонов Bicep для повторного использования. Они не являются реестром для необработанных модулей Bicep.
- Система управления версиями, такая как GitHub или Azure DevOps для совместной разработки, после чего можно сделать ссылку по локальным путям или опубликовать в реестре либо в спецификации шаблона.
Публикация модуля Terraform
Модули Terraform можно публиковать и совместно использовать с помощью:
- Общедоступный реестр , например реестр модулей Terraform HashiCorp и модули Azure, опубликованные в реестре модулей Terraform.
- Частный реестр, включая Terraform Cloud Private Registry или реестр контейнеров Azure
- Система управления версиями , например GitHub. Поддерживаемые источники см. в разделе "Источники модуля Terraform".
Развертывание инфраструктуры в виде кода с помощью конвейеров
Автоматизированные конвейеры обеспечивают согласованные и повторяемые развертывания, обеспечивая видимость и обеспечивая быстрое восстановление.
Реализуйте конвейеры CI/CD для всех развертываний инфраструктуры. Такие платформы, как Azure DevOps или GitHub Actions , помогают автоматизировать развертывания IaC. Конвейеры должны включать в себя встраивание, сканирование безопасности, тестирование и шлюзы утверждения перед развертыванием в рабочей среде. Они помогают сократить количество ошибок, обеспечить согласованность и поддерживать соответствие с помощью следов аудита.
Создайте стратегии продвижения среды с соответствующим тестированием. Развертывание инфраструктуры через этапы разработки, тестирования, промежуточной и рабочей среды с увеличением уровня проверки. Используйте стеки развертывания или управление состоянием в Terraform для отслеживания жизненного цикла ресурсов и обеспечения безопасных обновлений. Реализуйте автоматическое тестирование, которое проверяет конфигурацию инфраструктуры, состояние безопасности и функциональные возможности перед продвижением в следующую среду. Тестовые модули в изоляции перед интеграцией их в более крупные развертывания. Используйте такие средства, как набор средств тестирования шаблонов ARM и Terratest для модулей Terraform. Установите процессы для проверки функциональности модуля, безопасности и соответствия требованиям перед публикацией.
Ознакомьтесь с областями развертывания перед развертыванием. Просмотрите уровни управления Azure и иерархию , чтобы понять, где необходимо развернуть ресурсы. Каждый шаблон IaC должен нацелиться на соответствующую область, а различные средства имеют различные возможности на каждом уровне области. Например, развертывания на уровне клиента требуют определенных разрешений и поддерживают разные типы ресурсов, отличные от развертываний групп ресурсов.