Модуль Terraform — целевые зоны Azure

Azure предоставляет собственные службы для создания целевых зон Azure. Другие средства также могут помочь в этом. Одним из инструментов, которые клиенты и партнеры часто используют для развертывания целевых зон, является Terraform от HashiCorp.

Развертывание ресурсов в целевых зонах приложений осуществляется за пределами область модуля. Решения о методе развертывания и инструментарии принимаются командой, ответственной за приложение.

Модуль Terraform целевых зон Azure обеспечивает быструю реализацию ресурсов платформы, необходимых Целевые зоны Azure в большом масштабе с помощью Terraform. Модуль предназначен для упрощения развертывания иерархии, политик и ресурсов группы управления в подписках на подключение и управление.

Предварительные требования

Если вы не знакомы с Terraform и хотите получить сведения об установке и использовании Руководство по установке Terraform в HashiCorp Learn.

Сведения о настройке поставщика Terraform и проверке подлинности в Azure см. в статье Руководства по поставщику AzureRM на веб-сайте Terraform. Сведения о настройке поставщика для развертывания в нескольких подписках см. в Вики-страница конфигурации поставщика .

Важность использования стандартных модулей

Повторное использование компонентов является основным принципом подхода "инфраструктура как код". Модули предназначены для определения стандартов и единообразия в развертывании ресурсов в средах и между ними.

Модуль Terraform целевых зон Azure публикуется в Terraform Registry и проверяется HashiCorp.

Развертывание модуля из реестра Terraform обеспечивает следующие возможности:

  • Ускоренная доставка целевых зон Azure в вашей среде.
  • Проверенный путь обновления до последней версии модуля, а также строгий контроль версий.

Преимущества использования модуля

Преимущества использования модуля Terraform целевых зон Azure:

  • Управляемая и расширяемая иерархия основных ресурсов для организации подписки с помощью групп управления.
  • Масштабируемое управление безопасностью и соответствие требованиям с помощью элементов управления удостоверениями и доступом Azure (IAM) с обширной библиотекой пользовательских определений, готовых к назначению.
  • Применение политики между подписками с помощью наследования группы управления.
  • Управляемые ресурсы для целевых зон управления и подключения. Эти ресурсы предоставляют следующее:
    • гарантированное соответствие политике за счет тесной интеграции ресурсов, управляемых модулем, и соответствующих назначений политик;
    • Интеграция между ресурсами для сокращения затрат на управление и улучшения взаимодействия с пользователем, например автоматического создания виртуальных сетевых связей для azure Частная зона DNS.

Совет

Библиотека шаблонов обновляется программным способом из Репозиторий GitHub azure/Enterprise-Scale . Чтобы оставаться в курсе последних настроек, политик и ролей архетипа, убедитесь, что вы используете последнюю версию модуля.

Развертывание ресурсов

Вы можете настроить модуль для развертывания наборов ресурсов, которые соответствуют следующим критически важным областям проектирования в целевых зонах Azure. Настройте эти ресурсы в соответствии с требованиями вашей организации.

Категория ресурсов Критическая область проектирования
Основные ресурсы Безопасность организации
ресурсовУправление безопасностью
Управления
Ресурсы управления Управление и мониторинг
Ресурсы подключения Топология сети и подключение
Ресурсы удостоверений Управление удостоверениями и доступом

Упаковка этих возможностей в один модуль Terraform упрощает создание и обеспечение согласованности на платформе Azure при работе в большом масштабе.

Эти ресурсы соответствуют концептуальной архитектуре целевых зон Azure:

Схема концептуальной архитектуры целевой зоны Azure.

Эти ресурсы можно развернуть по возможности в нескольких подписках с помощью Конфигурация поставщика в блоке модуля.

В следующих разделах описаны типы ресурсов и параметры конфигурации.

Основные ресурсы

Основные возможности этого модуля развертывают основы концептуальная архитектура для целевых зон Azure с акцентом на центральную организация ресурсов.

Схема концептуальной архитектуры целевой зоны Azure с акцентом на иерархии основных ресурсов.

При включении развертывания основных ресурсов (включено по умолчанию), модуль развертывает следующие типы ресурсов и управляет ими:

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы управления Microsoft.Management/managementGroups azurerm_management_group
Подписки группы управления Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Назначения политик Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Определения политик Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Определения наборов политик Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Назначения ролей Microsoft.Authorization/roleAssignments azurerm_role_assignment
Определения ролей Microsoft.Authorization/roleDefinitions azurerm_role_definition

Точное количество ресурсов, создаваемых модулем, зависит от конфигурации модуля. Для конфигурации по умолчанию можно ожидать, что модуль создаст приблизительно 180 ресурсы.

Совет

Ни один из этих ресурсов не развертывается в область подписки, но для установки сеанса с проверкой подлинности в Azure Terraform по-прежнему требуется подписка. Дополнительные сведения о проверке подлинности в Azure см. в статье Поставщик Azure. Документация по проверке подлинности в Azure .

Ресурсы управления

Модуль предоставляет возможность развертывания ресурсы управления и мониторинга из концептуальная архитектура целевых зон Azure в указанной подписке, как описано в Вики-страница конфигурации поставщика. Модуль также гарантирует, что указанная подписка будет помещена в нужную группу управления.

Схема концептуальной архитектуры целевой зоны Azure с акцентом на ресурсы управления.

При включении развертывания ресурсов управления модуль развертывает следующие типы ресурсов и управляет ими (в зависимости от конфигурации):

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы ресурсов Microsoft.Resources/resourceGroups azurerm_resource_group
Рабочая область Log Analytics Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Решения Log Analytics Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Учетная запись службы автоматизации Microsoft.Automation/automationAccounts azurerm_automation_account
Связанная служба Log Analytics Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Помимо развертывания указанных выше ресурсов, модуль обеспечивает встроенную интеграцию с соответствующими назначениями политик для обеспечения полного соответствия политике.

Дополнительные сведения об использовании этой возможности см. на Развертывание ресурсов управления .

Ресурсы подключения

Модуль предоставляет возможность развертывания ресурсы топологии сети и подключения из концептуальная архитектура целевых зон Azure в контексте текущей подписки. Это также гарантирует, что указанная подписка будет помещена в нужную группу управления.

Эта возможность позволяет развертывать несколько центральных сетей на основе любого сочетания традиционной сетевой топологии Azure (звездообразной и звездообразной) и Виртуальная глобальная сеть топологии сети (управляемой Корпорацией Майкрософт).

Модуль также может создавать и связывать защиту от атак DDoS с виртуальными сетями, а также управлять централизованные общедоступные и частные зоны DNS.

Примечание

В настоящее время мы не рекомендуем защиту от атак DDoS IP в целевых зонах Azure и рекомендуем использовать этот параметр в определенных обстоятельствах. Ознакомьтесь с документацией по продукту О сравнении номеров SKU защиты от атак DDoS Azure

Традиционная сетевая топология Azure (центральная и периферийная топология)

При необходимости модуль может развернуть одну или несколько центральных сетей на основе традиционной топологии сети Azure (звездообразной и периферийной топологии).

Схема концептуальной архитектуры целевой зоны Azure, в котором основное внимание уделяется ресурсам подключения с использованием традиционной сетевой топологии Azure (звездообразной и звездообразной топологии).

Примечание

В настоящее время модуль настраивает только сетевой концентратор и зависимые ресурсы для подписки на подключение. Хотя существует возможность включить исходящий пиринг между виртуальными сетями из концентратора в периферийную сеть, пользователям по-прежнему необходимо инициировать пиринг между периферийными сетями. Это связано с ограничениями в том, как поставщик AzureRM ориентируется на определенную подписку для развертывания.

При развертывании ресурсов на основе традиционной сетевой топологии Azure (звездообразной и звездообразной топологии) модуль развертывает следующие типы ресурсов и управляет ими (в зависимости от конфигурации):

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы ресурсов Microsoft.Resources/resourceGroups azurerm_resource_group
виртуальные сети; Microsoft.Network/virtualNetworks azurerm_virtual_network
подсети; Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Шлюзы виртуальной сети Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Брандмауэры Azure Microsoft.Network/azureFirewalls azurerm_firewall
Общедоступные IP-адреса Microsoft.Network/publicIPAddresses azurerm_public_ip
Пиринги виртуальных сетей. Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Дополнительные сведения об использовании этой возможности см. на Развертывание ресурсов подключения .

Топология виртуальной глобальной сети (под управлением Майкрософт)

При необходимости модуль может развернуть одну или несколько центральных сетей на основе топологии сети Виртуальная глобальная сеть (под управлением Майкрософт).

Схема концептуальной архитектуры целевой зоны Azure с акцентом на ресурсы подключения с использованием топологии сети Виртуальная глобальная сеть (под управлением Майкрософт).

Примечание

Из-за разных возможностей Виртуальная глобальная сеть сетевых ресурсов по сравнению с традиционными пиринг для Виртуальная глобальная сеть периферийных узлов является двунаправленным при использовании этой возможности.

При развертывании ресурсов на основе Виртуальная глобальная сеть топологии сети (управляемой Корпорацией Майкрософт) модуль развертывает следующие типы ресурсов (в зависимости от конфигурации) и управляет ими:

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы ресурсов Microsoft.Resources/resourceGroups azurerm_resource_group
Виртуальные глобальные сети Microsoft.Network/virtualWans azurerm_virtual_wan
Виртуальные концентраторы Microsoft.Network/virtualHubs azurerm_virtual_hub
Шлюзы ExpressRoute Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
VPN-шлюзы; Microsoft.Network/vpnGateways azurerm_vpn_gateway
Брандмауэры Azure Microsoft.Network/azureFirewalls azurerm_firewall
Политики Брандмауэр Azure Microsoft.Network/firewallPolicies azurerm_firewall_policy
Подключения виртуального концентратора Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Дополнительные сведения об использовании этой возможности см. на Развертывание ресурсов Виртуальная глобальная сеть.

План защиты от атак DDoS

При необходимости модуль может развернуть защиту от атак DDoS и при необходимости связать виртуальные сети с планом.

Примечание

Из-за ограничений платформы планы защиты от атак DDoS можно включить только для традиционных виртуальных сетей. Поддержка виртуального концентратора в настоящее время недоступна.

Важно!

В руководстве по целевым зонам Azure рекомендуется включить защиту от атак DDoS для повышения защиты платформы Azure. Чтобы предотвратить непредвиденные затраты в непроизводственных развертываниях и развертываниях MVP, эта возможность отключена в модуле Terraform целевых зон Azure из-за затрат, связанных с этим ресурсом.

Для рабочих сред настоятельно рекомендуется включить эту возможность.

При включении развертывания ресурсов плана защиты от атак DDoS модуль развертывает следующие типы ресурсов (в зависимости от конфигурации) и управляет ими:

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы ресурсов Microsoft.Resources/resourceGroups azurerm_resource_group
Планы защиты от атак DDoS Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

Модуль может при необходимости развернуть Частная зона DNS зоны для поддержки частных конечных точек и связать их с концентраторами и (или) периферийными виртуальными сетями. При необходимости можно развернуть и связать пользовательские общедоступные и частные зоны DNS.

При включении развертывания ресурсов DNS модуль развертывает следующие типы ресурсов и управляет ими (в зависимости от конфигурации):

Ресурс Тип ресурса Azure Тип ресурса Terraform
Группы ресурсов Microsoft.Resources/resourceGroups azurerm_resource_group
Зоны DNS Microsoft.Network/dnsZones azurerm_dns_zone
Частные зоны DNS Microsoft.Network/privateDnsZones azurerm_private_dns_zone
Ссылка виртуальная сеть зоны Частная зона DNS Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Ресурсы удостоверений

Модуль предоставляет возможность настройки политик, связанных с целевая зона управления удостоверениями и доступом. Это также гарантирует, что указанная подписка будет помещена в нужную группу управления.

Схема концептуальной архитектуры целевой зоны Azure с акцентом на ресурсы удостоверений.

Примечание

Эта возможность не развертывает ресурсы. Если вы хотите обновить параметры политики, связанные с группой управления удостоверениями, используйте configure_identity_resources входную переменную.

Дополнительные сведения об использовании этой возможности см. на Развертывание ресурсов удостоверений .

Начало работы

Требования к началу работы с модулем описаны на начало работы вики-сайте.

Чтобы упростить начало работы, модуль был опубликован в Реестр Terraform. Вы можете ссылаться на него непосредственно в коде, как показано в простом примере далее в этой статье. При запуске terraform init автоматически скачивается модуль и все зависимости.

Последние зависимости от модуля и поставщика можно просмотреть в Вкладка "Зависимости " в реестре Terraform.

Важно!

Существуют известные проблемы с некоторыми сочетаниями версий Terraform и поставщика AzureRM. Можно устранить некоторые известные проблемы, обновив до последних версий Terraform и поставщика AzureRM. Другие известные проблемы — это временные ошибки, которые обычно можно исправить, повторно запустив развертывание.

Обычно рекомендуется фиксировать определенные версии и выполнять тщательное тестирование перед обновлением.

Мы выпустим новые версии модуля, когда потребуются изменения. Новые выпуски обеспечивают совместимость с последними версиями Terraform и поставщика AzureRM. Дополнительные сведения см. на Руководство по выпускам модулей .

Чтобы получить последние возможности, убедитесь, что для версии модуля задана последняя версия. Если вы выполняете обновление до более поздней версии модуля, выполните команду terraform init -upgrade.

Выпуск GitHub (последняя версия SemVer)

Простой пример

В этом примере кода развертывается минимальная рекомендуемая группа управления и организация подписки из эталонной архитектуры корпоративного масштаба. После запуска этого простого примера можно приступить к настройке развертывания.

Совет

Хотя root_parent_id является единственной обязательной переменной модуля, рекомендуется также настроить переменную root_id. root_id Изменение значения приведет к полному повторному развертыванию всех ресурсов, которыми управляет модуль, включая подчиненные зависимости.

Следующий код представляет собой простую начальную конфигурацию для корневого модуля main.tf.

# Configure Terraform to set the required AzureRM provider
# version and features{} block.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.77.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# Get the current client configuration from the AzureRM provider.
# This configuration is used to populate the root_parent_id variable with the
# current tenant ID used as the ID for the "Tenant Root Group"
# management group.

data "azurerm_client_config" "core" {}

# Use variables to customize the deployment

variable "root_id" {
  type    = string
  default = "es"
}

variable "root_name" {
  type    = string
  default = "Enterprise-Scale"
}

# Declare the Terraform Module for Cloud Adoption Framework
# Enterprise-scale and provide a base configuration.

module "enterprise_scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = ">= 1.0.0"

  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id = data.azurerm_client_config.core.tenant_id
  root_id        = var.root_id
  root_name      = var.root_name

}

Дальнейшие действия

Модуль Terraform для Cloud Adoption Framework корпоративного уровня предоставляет ускоренный путь к созданию целевых зон корпоративного уровня. Он также обеспечивает гибкость для расширения и настройки развертывания, сохраняя при этом упрощенный подход к управлению конфигурацией каждой целевой зоны.

Дополнительные сведения Просмотрите модуль в реестре Terraform и изучите документация по модулю на сайте GitHub. В документации вы найдете дополнительные примеры и руководства по настройке развертывания.

Узнайте, как разверните модуль Terraform целевых зон Azure с помощью HashiCorp Learn. Здесь также можно узнать, как работают некоторые части модуля.