Partilhar via


Módulo Terraform de zonas de aterrissagem do Azure

O Azure fornece serviços nativos para criar suas zonas de aterrissagem do Azure. Outras ferramentas também podem ajudar nesse esforço. Uma ferramenta que os clientes e parceiros costumam usar para implantar zonas de pouso é a Terraform da HashiCorp.

A implantação de recursos em zonas de aterrissagem de aplicativos está fora do escopo do módulo. As decisões sobre o método de implantação e as ferramentas são da responsabilidade da equipe responsável pelo aplicativo.

O módulo Terraform de zonas de aterrissagem do Azure fornece uma implementação rápida dos recursos de plataforma de que você precisa para gerenciar as zonas de aterrissagem do Azure em escala usando o Terraform. O módulo foi projetado para simplificar a implantação da hierarquia, políticas e recursos do grupo de gerenciamento nas assinaturas de conectividade e gerenciamento.

Pré-requisitos

Se você é novo no Terraform e deseja informações sobre como instalá-lo e usá-lo, consulte o tutorial Instalar o Terraform no HashiCorp Learn.

Para obter informações sobre como configurar o provedor Terraform e autenticar com o Azure, consulte os guias do provedor AzureRM no site do Terraform. Para saber como configurar o provedor para implantação em várias assinaturas, consulte a página wiki Configuração do provedor.

Importância do uso de módulos padrão

A reutilização de componentes é um princípio fundamental da infraestrutura como código. Os módulos são fundamentais para definir padrões e consistência na implantação de recursos dentro e entre ambientes.

O módulo Terraform das zonas de pouso do Azure é publicado no Registro oficial do Terraform e é verificado pela HashiCorp.

A implantação do módulo a partir do Registro Terraform fornece:

  • Uma entrega acelerada das zonas de aterrissagem do Azure em seu ambiente.
  • Um caminho de atualização testado para a versão mais recente do módulo, juntamente com um rigoroso controle de versão.

Benefícios da utilização do módulo

Os benefícios de usar as zonas de aterrissagem do Azure módulo Terraform incluem:

  • Uma hierarquia de recursos central gerenciada e extensível para a organização de assinatura por meio de grupos de gerenciamento.
  • Governança de segurança escalável e conformidade por meio de controles de gerenciamento de identidade e acesso (IAM) do Azure, com uma extensa biblioteca de definições personalizadas prontas para atribuição.
  • Aplicação da política entre subscrições através da herança do grupo de gestão.
  • Recursos gerenciados para zonas de pouso de gerenciamento e conectividade. Estes recursos fornecem:
    • Garantia da conformidade com as políticas através da integração total dos recursos gerenciados pelo módulo e das atribuições de políticas correspondentes.
    • Integração entre recursos para reduzir a sobrecarga de gerenciamento e fornecer uma experiência de usuário aprimorada, como a criação automática de links de rede virtual para o DNS Privado do Azure.

Gorjeta

A biblioteca de modelos é atualizada programaticamente a partir do repositório GitHub do Azure/Enterprise-Scale . Para se manter atualizado com a configuração, as políticas e as funções mais recentes do arquétipo, certifique-se de que está a utilizar a versão mais recente do módulo.

Implantação de recursos

Você pode configurar o módulo para implantar conjuntos de recursos que se alinham com as seguintes áreas críticas de design nas zonas de aterrissagem do Azure. Personalize esses recursos para atender aos requisitos da sua organização.

Categoria de recursos Área crítica de projeto
Recursos principais Governança de segurança
da organização
de recursos
Recursos de gestão Gestão e monitorização
Recursos de conectividade Topologia e conectividade de rede
Recursos de identidade Gestão de identidades e acessos

Empacotar esses recursos em um único módulo Terraform facilita a criação e a imposição de consistência em toda a plataforma do Azure quando você está operando em escala.

Esses recursos se alinham com a arquitetura conceitual das zonas de aterrissagem do Azure:

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure.

Você pode implantar esses recursos, por capacidade, em várias assinaturas usando a Configuração do Provedor no bloco de módulo.

As seções a seguir descrevem os tipos de recursos e as opções de configuração.

Recursos principais

A capacidade principal deste módulo implanta os fundamentos da arquitetura conceitual para zonas de aterrissagem do Azure, com foco na organização central de recursos.

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure, com foco na hierarquia de recursos principal.

Quando você habilita a implantação de recursos principais (habilitada por padrão), o módulo implanta e gerencia os seguintes tipos de recursos:

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de gestão Microsoft.Management/managementGroups azurerm_management_group
Subscrições do grupo de gestão Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Atribuições de políticas Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Definições de política Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Definições do conjunto de políticas Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Atribuições de funções Microsoft.Authorization/roleAssignments azurerm_role_assignment
Definições de função Microsoft.Authorization/roleDefinitions azurerm_role_definition

O número exato de recursos que o módulo cria depende da configuração do módulo. Para uma configuração padrão, você pode esperar que o módulo crie aproximadamente 180 recursos.

Gorjeta

Nenhum desses recursos é implantado no escopo da assinatura, mas o Terraform ainda requer uma assinatura para estabelecer uma sessão autenticada com o Azure. Para obter mais informações sobre a autenticação com o Azure, consulte a documentação Provedor do Azure: Autenticando no Azure .

Recursos de gestão

O módulo fornece uma opção para habilitar a implantação de recursos de gerenciamento e monitoramento da arquitetura conceitual das zonas de aterrissagem do Azure na assinatura especificada, conforme descrito na página wiki Configuração do Provedor. O módulo também garante que a assinatura especificada seja colocada no grupo de gerenciamento correto.

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure, com foco nos recursos de gerenciamento.

Quando você habilita a implantação de recursos de gerenciamento, o módulo implanta e gerencia os seguintes tipos de recursos (dependendo da configuração):

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de recursos Microsoft.Resources/resourceGroups azurerm_resource_group
Área de trabalho do Log Analytics Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Soluções de Log Analytics Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Conta de automatização Microsoft.Automation/automationAccounts azurerm_automation_account
Serviço vinculado do Log Analytics Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Além de implantar os recursos acima, o módulo fornece integração nativa nas atribuições de política correspondentes para garantir a conformidade total com as políticas.

Para obter mais informações sobre como usar esse recurso, consulte a página wiki Implantar recursos de gerenciamento.

Recursos de conectividade

O módulo fornece uma opção para habilitar a implantação de topologia de rede e recursos de conectividade da arquitetura conceitual para zonas de aterrissagem do Azure no contexto de assinatura atual. Ele também garante que a assinatura especificada seja colocada no grupo de gerenciamento correto.

Esse recurso permite a implantação de várias redes de hub com base em qualquer combinação de topologia de rede tradicional do Azure (hub e spoke) e topologia de rede WAN Virtual (gerenciada pela Microsoft).

O módulo também pode criar e vincular Proteção de Rede DDoS a Redes Virtuais e gerenciar zonas DNS públicas e privadas centralizadas.

Nota

Atualmente, não recomendamos a Proteção contra IP DDoS nas Zonas de Desembarque do Azure e recomendamos o uso dessa opção em circunstâncias específicas. Consulte a documentação do produto Sobre a comparação de SKU da Proteção contra DDoS do Azure

Topologia de rede tradicional do Azure (hub e spoke)

O módulo pode, opcionalmente, implantar uma ou mais redes de hub com base na topologia de rede tradicional do Azure (hub e spoke).

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure, com foco nos recursos de conectividade usando uma topologia de rede tradicional do Azure (hub e spoke).

Nota

Atualmente, o módulo configura apenas o hub de rede e os recursos dependentes para a assinatura de conectividade. Embora haja uma opção para habilitar o emparelhamento de rede virtual de saída do hub para o spoke, os usuários ainda precisam iniciar o emparelhamento do spoke para o hub. Isso ocorre devido a limitações na forma como o provedor AzureRM direciona uma assinatura específica para implantação.

Quando você implanta recursos com base em uma topologia de rede tradicional do Azure (hub e spoke), o módulo implanta e gerencia os seguintes tipos de recursos (dependendo da configuração):

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de recursos Microsoft.Resources/resourceGroups azurerm_resource_group
Redes virtuais Microsoft.Network/virtualNetworks azurerm_virtual_network
Sub-redes Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Gateways de rede virtual Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Firewalls do Azure Microsoft.Network/azureFirewalls azurerm_firewall
Endereços IP públicos Microsoft.Network/publicIPAddresses azurerm_public_ip
Emparelhamento de rede virtual Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Para obter mais informações sobre como usar esse recurso, consulte a página wiki Implantar recursos de conectividade.

Topologia de rede WAN virtual (gerenciada pela Microsoft)

Opcionalmente, o módulo pode implantar uma ou mais redes de hub com base na topologia de rede WAN Virtual (gerenciada pela Microsoft).

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure, com foco nos recursos de conectividade usando uma topologia de rede WAN Virtual (gerenciada pela Microsoft).

Nota

Devido aos diferentes recursos de rede da WAN Virtual em relação aos recursos tradicionais, o emparelhamento para raios da WAN Virtual é bidirecional ao usar esse recurso.

Quando você implanta recursos com base em uma topologia de rede WAN Virtual (gerenciada pela Microsoft), o módulo implanta e gerencia os seguintes tipos de recursos (dependendo da configuração):

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de Recursos Microsoft.Resources/resourceGroups azurerm_resource_group
WANs Virtuais Microsoft.Network/virtualWans azurerm_virtual_wan
Hubs Virtuais Microsoft.Network/virtualHubs azurerm_virtual_hub
Gateways do Express Route Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
Gateways de VPN Microsoft.Network/vpnGateways azurerm_vpn_gateway
Azure Firewalls Microsoft.Network/azureFirewalls azurerm_firewall
Políticas de Firewall do Azure Microsoft.Network/firewallPolicies azurerm_firewall_policy
Conexões de hub virtual Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Para obter mais informações sobre como usar esse recurso, consulte a página wiki Implantar recursos de WAN virtual.

Plano de proteção contra DDoS

O módulo pode, opcionalmente, implantar a Proteção de Rede DDoS e vincular Redes Virtuais ao plano, se necessário.

Nota

Devido às limitações da plataforma, os planos de Proteção contra DDoS só podem ser ativados para redes virtuais tradicionais. O suporte ao Hub Virtual não está disponível no momento.

Importante

A orientação de zonas de aterrissagem do Azure recomenda habilitar a Proteção de Rede DDoS para aumentar a proteção da sua plataforma Azure. Para evitar custos inesperados em implantações de não-produção e MVP, esse recurso é desabilitado no módulo Terraform das zonas de aterrissagem do Azure devido ao custo associado a esse recurso.

Para ambientes de produção, é altamente recomendável habilitar esse recurso.

Quando você habilita a implantação de recursos do plano de Proteção contra DDoS, o módulo implanta e gerencia os seguintes tipos de recursos (dependendo da configuração):

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de recursos Microsoft.Resources/resourceGroups azurerm_resource_group
Planos de proteção contra DDoS Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

O módulo pode, opcionalmente, implantar zonas de DNS privado para suportar pontos de extremidade privados e vinculá-los a redes virtuais de hub e/ou spoke. As zonas DNS públicas e privadas especificadas pelo usuário também podem ser implantadas e vinculadas conforme necessário.

Quando você habilita a implantação de recursos DNS, o módulo implanta e gerencia os seguintes tipos de recursos (dependendo da configuração):

Recurso Tipo de recurso do Azure Tipo de recurso Terraform
Grupos de Recursos Microsoft.Resources/resourceGroups azurerm_resource_group
Zonas DNS Microsoft.Network/dnsZones azurerm_dns_zone
Zonas DNS privadas Microsoft.Network/privateDnsZones azurerm_private_dns_zone
Link de rede virtual da zona DNS privada Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Recursos de identidade

O módulo fornece uma opção para configurar políticas relacionadas à zona de aterrissagem de gerenciamento de identidade e acesso. Ele também garante que a assinatura especificada seja colocada no grupo de gerenciamento correto.

Diagrama da arquitetura conceitual da zona de aterrissagem do Azure, com foco nos recursos de identidade.

Nota

Esse recurso não implanta recursos. Se desejar atualizar as configurações de diretiva relacionadas ao grupo de gerenciamento de identidades, use a configure_identity_resources variável de entrada.

Para obter mais informações sobre como usar esse recurso, consulte a página wiki Implantar recursos de identidade.

Introdução

Os requisitos para começar a usar o módulo estão documentados na página Wiki de Introdução .

Para simplificar os primeiros passos, o módulo foi publicado no Registro Terraform. Você pode fazer referência a ele diretamente em seu código, como mostrado no exemplo simples mais adiante neste artigo. A execução terraform init fará o download automático do módulo e de todas as dependências.

Você pode exibir as dependências mais recentes do módulo e do provedor na guia Dependências no Registro Terraform.

Importante

Há problemas conhecidos com algumas combinações de versão do provedor Terraform e AzureRM. Você pode resolver alguns problemas conhecidos atualizando para as versões mais recentes do provedor Terraform e AzureRM. Outros problemas conhecidos são erros transitórios que você normalmente pode corrigir executando novamente sua implantação.

Geralmente, recomendamos fixar em versões específicas e testar minuciosamente antes de atualizar.

Lançaremos novas versões do módulo quando forem necessárias alterações. As novas versões garantirão a compatibilidade com as versões mais recentes do provedor Terraform e AzureRM. Consulte as nossas Orientações de versões de módulos para obter mais informações.

Para obter os recursos mais recentes, verifique se a versão do módulo está definida para a versão mais recente. Se você estiver atualizando para uma versão posterior do módulo, execute terraform init -upgrade.

Versão do GitHub (SemVer mais recente)

Exemplo simples

Este código de exemplo implanta o grupo de gerenciamento mínimo recomendado e a organização de assinatura da arquitetura de referência em escala empresarial. Depois de ter este exemplo simples instalado e em execução, você pode começar a personalizar sua implantação.

Gorjeta

root_parent_id Apesar de ser a única variável obrigatória do módulo, também recomendamos a configuraçãoroot_id. A alteração do root_id valor iniciará uma reimplantação completa de todos os recursos gerenciados pelo módulo, incluindo dependências a jusante.

O código a seguir é uma configuração inicial simples para seu main.tf módulo raiz:

# 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

}

Próximos passos

O módulo Terraform para Cloud Adoption Framework Enterprise-scale fornece um caminho acelerado para a construção de suas zonas de aterrissagem em escala empresarial. Ele também oferece a flexibilidade de expandir e personalizar sua implantação, mantendo uma abordagem simplificada para gerenciar a configuração de cada zona de pouso.

Para saber mais, revise o módulo no Registro Terraform e explore a documentação do módulo no GitHub. Na documentação, você encontrará mais exemplos e tutoriais sobre como personalizar sua implantação.

Saiba como implantar o módulo Terraform de zonas de aterrissagem do Azure por meio do HashiCorp Learn. A partir daí, você também pode descobrir como algumas partes do módulo funcionam.