Модуль Terraform — целевые зоны Azure
Azure предоставляет собственные службы для создания целевых зон Azure. Другие средства также могут помочь в этих усилиях. Одним из средств, которые клиенты и партнеры часто используют для развертывания целевых зон, является Terraform by HashiCorp.
Развертывание ресурсов в целевых зонах приложений выходит за рамки модуля. Решения по методу развертывания и инструментам предназначены для команды, ответственной за приложение.
Модуль Terraform целевых зон Azure обеспечивает быструю реализацию ресурсов платформы, которые необходимо управлять целевыми зонами Azure в масштабе с помощью Terraform. Модуль предназначен для упрощения развертывания иерархии групп управления, политик и ресурсов в подписках подключения и управления.
Необходимые компоненты
Если вы не знакомы с Terraform и хотите получить сведения об установке и использовании, ознакомьтесь с руководством по установке Terraform в HashiCorp Learn.
Сведения о настройке поставщика Terraform и проверке подлинности в Azure см . в руководствах по поставщику AzureRM на веб-сайте Terraform. Сведения о настройке поставщика для развертывания в нескольких подписках см. на вики-странице конфигурации поставщика.
Важность использования стандартных модулей
Повторное использование компонентов является основным принципом подхода "инфраструктура как код". Модули предназначены для определения стандартов и единообразия в развертывании ресурсов в средах и между ними.
Модуль Terraform целевых зон Azure публикуется в официальном реестре Terraform и проверяется HashiCorp.
Развертывание модуля из реестра Terraform предоставляет следующие возможности:
- Ускоренная доставка целевых зон Azure в вашей среде.
- Проверенный путь обновления до последней версии модуля, а также строгий элемент управления версиями.
Преимущества использования модуля
Преимущества использования модуля Terraform целевых зон Azure:
- Управляемая и расширяемая иерархия основных ресурсов для организации подписки через группы управления.
- Масштабируемое управление безопасностью и соответствие требованиям с помощью элементов управления удостоверениями и доступом Azure (IAM) с обширной библиотекой настраиваемых определений, готовых к назначению.
- Принудительное применение политики между подписками через наследование группы управления.
- Управляемые ресурсы для целевых зон управления и подключения. Эти ресурсы предоставляют следующие ресурсы:
- гарантированное соответствие политике за счет тесной интеграции ресурсов, управляемых модулем, и соответствующих назначений политик;
- Интеграция между ресурсами для снижения затрат на управление и обеспечения улучшенного взаимодействия с пользователем, например автоматического создания каналов виртуальной сети для Azure Частная зона DNS.
Совет
Библиотека шаблонов обновляется программным способом из репозитория GitHub azure /Enterprise-Scale . Чтобы оставаться в курсе последних настроек, политик и ролей архетипа, убедитесь, что вы используете последнюю версию модуля.
Развертывание ресурсов
Модуль можно настроить для развертывания наборов ресурсов, которые соответствуют следующим критически важным областям проектирования в целевых зонах Azure. Настройте эти ресурсы в соответствии с требованиями вашей организации.
Категория ресурса | Критическая область проектирования |
---|---|
Основные ресурсы | Управление безопасностью организации ресурсов |
Ресурсы управления | Управление и мониторинг |
Ресурсы подключения | Топология сети и подключения |
Ресурсы удостоверений | Управление удостоверениями и доступом |
Упаковка этих возможностей в один модуль Terraform упрощает сборку и применение согласованности на платформе 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
ресурсы.
Совет
Ни один из этих ресурсов не развертывается в области подписки, но Terraform по-прежнему требует подписки, чтобы установить прошедший проверку подлинности сеанс с 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.
Примечание.
В настоящее время мы не рекомендуем защиту IP-адресов DDoS в целевых зонах Azure и рекомендуем использовать этот параметр в определенных обстоятельствах. Ознакомьтесь с документацией по продукту о сравнении SKU защиты от атак DDoS 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 | Тип ресурса 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 |
Ресурсы удостоверений
Модуль предоставляет возможность настроить политики, относящиеся к целевой зоне управления удостоверениями и доступом . Он также гарантирует, что указанная подписка помещается в правильную группу управления.
Примечание.
Эта возможность не развертывает ресурсы. Если вы хотите обновить параметры политики, связанные с группой управления удостоверениями, используйте configure_identity_resources
входную переменную.
Дополнительные сведения об использовании этой возможности см. на странице вики-страницы "Развертывание ресурсов удостоверений".
Начало работы
Требования к началу работы с модулем описаны на странице "Начало работы вики-сайта".
Чтобы упростить начало работы, модуль был опубликован в реестре Terraform. Вы можете ссылаться на него непосредственно в коде, как показано в простом примере далее в этой статье. При запуске terraform init
автоматически скачивается модуль и все зависимости.
Вы можете просмотреть последние зависимости модуля и поставщика на вкладке зависимостей в реестре Terraform.
Внимание
Существуют известные проблемы с некоторыми сочетаниями версий Terraform и поставщика AzureRM. Можно устранить некоторые известные проблемы, обновив до последних версий Terraform и поставщика AzureRM. Другие известные проблемы являются временными ошибками, которые обычно можно исправить, повторно выполнив развертывание.
Обычно рекомендуется фиксировать определенные версии и выполнять тщательное тестирование перед обновлением.
При необходимости мы выпустим новые версии модуля. Новые выпуски обеспечивают совместимость с последними версиями Terraform и поставщиком AzureRM. Дополнительные сведения см. в руководстве по выпускам модулей.
Чтобы получить последние функции, убедитесь, что версия модуля установлена на последнюю версию. Если вы обновляетесь до более поздней версии модуля, выполните команду terraform init -upgrade
.
Простой пример
В этом примере код развертывает минимальную рекомендуемую группу управления и организацию подписки из эталонной архитектуры корпоративного масштаба. После выполнения этого простого примера можно начать настройку развертывания.
Совет
Хотя 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 Enterprise предоставляет ускоренный путь к созданию целевых зон корпоративного масштаба. Он также обеспечивает гибкость для расширения и настройки развертывания, сохраняя при этом упрощенный подход к управлению конфигурацией каждой целевой зоны.
Чтобы узнать больше, ознакомьтесь с модулем в реестре Terraform и изучите документацию по модулю на GitHub. В документации вы найдете дополнительные примеры и руководства по настройке развертывания.
Узнайте, как развернуть модуль Terraform целевых зон Azure с помощью HashiCorp Learn. Здесь также можно узнать, как работают некоторые части модуля.