Модуль 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 с акцентом на централизованной организации ресурсов.

Схема концептуальной архитектуры целевой зоны 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, ориентированной на ресурсы управления.

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

Ресурс Тип ресурса 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 (концентратор и периферийный).

Схема концептуальной архитектуры целевой зоны 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 Enterprise предоставляет ускоренный путь к созданию целевых зон корпоративного масштаба. Он также обеспечивает гибкость для расширения и настройки развертывания, сохраняя при этом упрощенный подход к управлению конфигурацией каждой целевой зоны.

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

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