Módulo Terraform das zonas de destino do Azure
O Azure fornece serviços nativos para a criação das suas zonas de destino do Azure. Outras ferramentas também podem ajudar nessa questão. Uma ferramenta que clientes e parceiros costumam usar para implantar zonas de destino é o Terraform da HashiCorp.
A implantação de recursos para zonas de destino do aplicativo está fora do escopo do módulo. As decisões sobre o método de implantação e as ferramentas são para a equipe responsável pelo aplicativo.
O módulo Terraform de zonas de destino do Azure fornece uma implementação rápida dos recursos de plataforma necessários para gerenciar zonas de destino do Azure em escala usando o Terraform. O módulo foi projetado para simplificar a implantação da hierarquia, das políticas e dos 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 de usar módulos padrão
A reutilização de componentes é um princípio fundamental da infraestrutura como código. Os módulos são instrumentais para definir padrões e consistência em toda a implantação de recursos em e entre ambientes.
O módulo Terraform de zonas de destino do Azure é publicado no Registro oficial do Terraform e é verificado pela HashiCorp.
A implantação do módulo do Registro do Terraform fornece o seguinte:
- Uma entrega acelerada de zonas de destino do Azure em seu ambiente.
- Um caminho de atualização testado para a versão mais recente do módulo, além de um controle de versão rigoroso.
Benefícios do uso do módulo
Os benefícios de usar o módulo do Terraform de zonas de destino do Azure incluem o seguinte:
- Uma hierarquia de recursos principais gerenciada e extensível para a organização de assinaturas por meio de grupos de gerenciamento.
- Conformidade e governança de segurança escaláveis por meio de controles de IAM (gerenciamento de acesso e identidade) do Azure, com uma extensa biblioteca de definições personalizadas prontas para atribuição.
- Aplicação da política nas assinaturas por meio da herança do grupo de gerenciamento.
- Recursos gerenciados para zonas de destino de gerenciamento e conectividade. Esses recursos fornecem:
- Conformidade de política garantida por meio da integração total de recursos gerenciados pelo módulo e atribuições de política 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.
Dica
A biblioteca de modelos é atualizada programaticamente do repositório GitHub do Azure/Enterprise-Scale . Para se manter atualizado com a configuração, as políticas e as funções de arquétipo mais recentes, verifique se você está usando a versão mais recente do módulo.
Implantação de recursos
É possível configurar o módulo para implantar conjuntos de recursos alinhados às seguintes áreas de design críticas nas zonas de destino do Azure. Personalize esses recursos para atender aos requisitos de sua organização.
Categoria de recurso | Área de design crítica |
---|---|
Recursos principais | Organização de recursos Governança de segurança |
Recursos de gerenciamento | Gerenciamento e monitoramento |
Recursos de conectividade | Topologia de rede e conectividade |
Recursos de identidade | Gerenciamento de identidade e acesso |
Empacotar esses recursos em um único módulo do Terraform facilita a criação e a imposição de consistência em toda a plataforma do Azure ao operar em escala.
Esses recursos se alinham à arquitetura conceitual de zonas de destino do Azure:
Você pode implantar esses recursos, por funcionalidade, em várias assinaturas usando a Configuração do Provedor no bloco de módulos.
As seções a seguir descrevem os tipos de recursos e as opções de configuração.
Recursos principais
A funcionalidade principal deste módulo implanta as bases da arquitetura conceitual para zonas de destino do Azure, com foco na organização central de recursos.
Ao habilitar 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 do Terraform |
---|---|---|
Grupos de gerenciamento | Microsoft.Management/managementGroups |
azurerm_management_group |
Assinaturas do grupo de gerenciamento | Microsoft.Management/managementGroups/subscriptions |
azurerm_management_group |
Atribuições de política | 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ção | 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, o módulo provavelmente criará cerca de 180
recursos.
Dica
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 como autenticar com o Azure, consulte a documentação do Provedor do Azure: Autenticando no Azure .
Recursos de gerenciamento
O módulo fornece uma opção para habilitar a implantação de recursos de gerenciamento e monitoramento da arquitetura conceitual para zonas de destino 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.
Ao habilitar 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 do Terraform |
---|---|---|
Grupos de recursos | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Espaço de Trabalho do Log Analytics | Microsoft.OperationalInsights/workspaces |
azurerm_log_analytics_workspace |
Soluções do Log Analytics | Microsoft.OperationsManagement/solutions |
azurerm_log_analytics_solution |
Conta de automação | Microsoft.Automation/automationAccounts |
azurerm_automation_account |
Serviço vinculado ao 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 da política.
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 destino 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 diversas 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 a proteção de rede DDoS a redes virtuais e gerenciar zonas DNS públicas e privadas centralizadas.
Observação
No momento, não recomendamos a Proteção de IP contra DDoS nas Zonas de Destino do Azure e recomendamos usar essa opção em circunstâncias específicas. Examine a documentação do produto Sobre a comparação de SKUs 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).
Observação
No momento, o módulo só configura 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 de hub para spoke, os usuários ainda precisam iniciar o emparelhamento de spoke para hub. Isso se deve a limitações do provedor AzureRM ao direcionar uma assinatura específica para implantação.
Ao implantar 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 do 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 |
Emparelhamentos 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 de WAN Virtual (gerenciada pela Microsoft)
O módulo pode, opcionalmente, implantar uma ou mais redes de hub com base na topologia de rede WAN Virtual (gerenciada pela Microsoft).
Observação
Devido às diferentes capacidades dos recursos de rede WAN Virtual em relação aos tradicionais, o emparelhamento de spokes de WAN Virtual é bidirecional ao usar esse recurso.
Ao implantar 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 do 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 VPN | Microsoft.Network/vpnGateways |
azurerm_vpn_gateway |
Firewalls do Azure | 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
Opcionalmente, o módulo pode implantar a Proteção de Rede DDoS e vincular Redes Virtuais ao plano, se necessário.
Observação
Devido às limitações da plataforma, os planos de Proteção contra DDoS só podem ser habilitados para redes virtuais tradicionais. O suporte ao hub virtual não está disponível no momento.
Importante
As diretrizes de zonas de destino do Azure recomendam habilitar a Proteção de Rede DDoS para aumentar a proteção de sua plataforma do Azure. Para evitar custos inesperados em implantações que não são de produção e de MVP, esse recurso é desabilitado no módulo do Terraform de zonas de destino do Azure devido ao custo associado a ele.
Para ambientes de produção, é altamente recomendável habilitar esse recurso.
Ao habilitar 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 do 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 DNS privadas para dar suporte a pontos de extremidade privados e vinculá-las a redes virtuais 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.
Ao habilitar a implantação de recursos de 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 do 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 de 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 destino de gerenciamento de identidade e acesso. Ele também garante que a assinatura especificada seja colocada no grupo de gerenciamento correto.
Observação
Essa capacidade não implanta nenhum recurso. Para atualizar as configurações de política relacionadas ao grupo de gerenciamento de identidades, use a variável de entrada configure_identity_resources
.
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 o início, o módulo foi publicado no Terraform Registry. É possível referenciá-lo diretamente em seu código, conforme mostrado no exemplo simples mais adiante neste artigo. A execução do terraform init
baixará automaticamente o módulo e todas as dependências.
Você pode exibir as dependências mais recentes do módulo e do provedor na guia Dependências no Registro do Terraform.
Importante
Há problemas conhecidos com algumas combinações de versão do provedor do Terraform e do AzureRM. Você pode resolver alguns problemas conhecidos atualizando para as versões mais recentes do provedor do Terraform e do AzureRM. Outros problemas conhecidos são erros temporários que normalmente podem ser corrigidos executando novamente a implantação.
Geralmente, é recomendável marcar versões específicas e testar minuciosamente antes de atualizar.
Novas versões do módulo serão lançadas quando alterações forem necessárias. Os novos lançamentos garantirão a compatibilidade com as versões mais recentes do Terraform e do provedor AzureRM. Consulte nossas diretrizes 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á configurada como a mais recente. Se você estiver atualizando para uma versão posterior do módulo, execute terraform init -upgrade
.
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 de escala empresarial. Depois de colocar esse exemplo simples em execução, será possível começar a personalizar sua implantação.
Dica
Apesar de root_parent_id
ser a única variável obrigatória do módulo, também recomendamos a configuração do root_id
. Alterar o valor root_id
iniciará uma reimplantação completa de todos os recursos que o módulo gerencia, incluindo dependências downstream.
O código a seguir é uma configuração inicial simples para o módulo raiz 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
}
Próximas etapas
O módulo Terraform para Cloud Adoption Framework em escala empresarial fornece um caminho acelerado para criar suas zonas de destino em escala empresarial. Ele também fornece a flexibilidade para expandir e personalizar sua implantação, mantendo uma abordagem simplificada para gerenciar a configuração de cada zona de destino.
Para saber mais, revise o módulo no Terraform Registry e explore a documentação do módulo no GitHub. Na documentação, você encontra mais exemplos e tutoriais sobre como personalizar sua implantação.
Saiba como implantar o módulo Terraform de zonas de destino do Azure por meio do HashiCorp Learn. Lá, também é possível descobrir como algumas partes do módulo funcionam.