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:
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.
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.
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).
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).
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.
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
.
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.