Модуль 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 | Тип ресурса 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 | Тип ресурса 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 (звездообразной и периферийной топологии).
Примечание
В настоящее время модуль настраивает только сетевой концентратор и зависимые ресурсы для подписки на подключение. Хотя существует возможность включить исходящий пиринг между виртуальными сетями из концентратора в периферийную сеть, пользователям по-прежнему необходимо инициировать пиринг между периферийными сетями. Это связано с ограничениями в том, как поставщик 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 корпоративного уровня предоставляет ускоренный путь к созданию целевых зон корпоративного уровня. Он также обеспечивает гибкость для расширения и настройки развертывания, сохраняя при этом упрощенный подход к управлению конфигурацией каждой целевой зоны.
Дополнительные сведения Просмотрите модуль в реестре Terraform и изучите документация по модулю на сайте GitHub. В документации вы найдете дополнительные примеры и руководства по настройке развертывания.
Узнайте, как разверните модуль Terraform целевых зон Azure с помощью HashiCorp Learn. Здесь также можно узнать, как работают некоторые части модуля.