Módulo de Terraform para zonas de aterrizaje de Azure
Azure proporciona servicios nativos para crear zonas de aterrizaje de Azure. Hay otras herramientas que también pueden ayudarle con este trabajo. Una herramienta que los clientes y asociados a menudo usan para implementar zonas de aterrizaje es Terraform de HashiCorp.
La implementación de recursos en zonas de aterrizaje de aplicaciones está fuera del ámbito del módulo. Las decisiones sobre el método de implementación y las herramientas son para el equipo responsable de la aplicación.
módulo Terraform para las zonas de aterrizaje de Azure proporciona una rápida implementación de los recursos de la plataforma que necesita administrar Zonas de aterrizaje de Azure a escala mediante Terraform. El módulo está diseñado para simplificar la implementación de la jerarquía de grupos de administración, las directivas y los recursos de las suscripciones de conectividad y administración.
Requisitos previos
Si es nuevo en Terraform y quiere obtener información sobre su uso e instalación, consulte el tutorial Instalación de Terraform en HashiCorp Learn.
Para obtener información sobre cómo configurar el proveedor de Terraform y autenticarse en Azure, consulte las guías las Guías del proveedor AzureRM en el sitio web de Terraform. Para obtener más información sobre cómo configurar el proveedor para la implementación en varias suscripciones, consulte la página wiki Configuración del proveedor.
Importancia del uso de módulos estándar
La reutilización de componentes es un principio fundamental de la infraestructura como código. Los módulos son fundamentales para definir los estándares y la coherencia a través de la implementación de recursos dentro y entre entornos.
El módulo Terraform para las zonas de aterrizaje de Azure está publicado en la página oficial Registro de Terraform y ha sido comprobado por HashiCorp.
La implementación del módulo desde el registro de Terraform proporciona:
- Una entrega acelerada de las zonas de aterrizaje de Azure en su entorno.
- Una ruta de actualización probada a la versión más reciente del módulo, junto con el control de versiones estricto.
Ventajas de usar el módulo
Entre las ventajas de usar el módulo Terraform para las zonas de aterrizaje de Azure se incluyen:
- Una jerarquía de recursos principales administrada y extensible para la organización de suscripciones mediante grupos de administración.
- Gobernanza y cumplimiento de seguridad escalables mediante controles de administración de identidad y acceso (IAM) de Azure, con una amplia biblioteca de definiciones personalizadas listas para su asignación.
- Aplicación de directivas entre suscripciones mediante la herencia de grupos de administración.
- Recursos administrados para las zonas de aterrizaje de administración y conectividad. Estos recursos proporcionan:
- Cumplimiento de las directivas garantizado mediante una estrecha integración de los recursos administrados por el módulo y las asignaciones de directivas correspondientes.
- Integración entre recursos para reducir la sobrecarga de administración y proporcionar una experiencia de usuario mejorada, como la creación automática de vínculos de red virtual para DNS privado de Azure.
Sugerencia
La biblioteca de plantillas se actualiza mediante programación desde el Azure/Enterprise-Scale. Para mantenerse al día con la configuración, las directivas y los roles de arquetipo más recientes, asegúrese de que usa la versión más reciente del módulo.
Implementación de recursos
Puede configurar el módulo para implementar conjuntos de recursos que se alineen con las siguientes áreas de diseño críticas en las zonas de aterrizaje de Azure. Personalice estos recursos para cumplir los requisitos de la organización.
Categoría del recurso | Área de diseño crítica |
---|---|
Recursos principales | Organización de recursos Seguridad Gobernanza |
Recursos de administración | Administración y supervisión |
Recursos de conectividad | Topología de red y conectividad |
Recursos de identidad | Administración de identidades y acceso |
Empaquetar estas funcionalidades en un solo módulo Terraform simplifica la creación y aplicación de la coherencia en la plataforma de Azure al trabajar a escala.
Estos recursos se alinean con la arquitectura conceptual de las zonas de aterrizaje de Azure:
Puede implementar estos recursos, por funcionalidad, en varias suscripciones mediante la Configuración del proveedor del bloque del módulo.
En las secciones siguientes se describen los tipos de recursos y las opciones de configuración.
Recursos principales
La principal capacidad de este módulo implementa los fundamentos de la arquitectura conceptual para las zonas de aterrizaje de Azure y se centra en la organización de recursos.
Al habilitar la implementación de recursos principales (habilitados de forma predeterminada), el módulo implementa y administra los siguientes tipos de recursos:
Recurso | Tipo de recurso de Azure | Tipo de recurso de Terraform |
---|---|---|
Grupos de administración | Microsoft.Management/managementGroups |
azurerm_management_group |
Suscripciones a grupos de administración | Microsoft.Management/managementGroups/subscriptions |
azurerm_management_group |
Asignaciones de directivas | Microsoft.Authorization/policyAssignments |
azurerm_management_group_policy_assignment |
Definiciones de directiva | Microsoft.Authorization/policyDefinitions |
azurerm_policy_definition |
Definiciones de conjuntos de directivas | Microsoft.Authorization/policySetDefinitions |
azurerm_policy_set_definition |
Asignaciones de roles | Microsoft.Authorization/roleAssignments |
azurerm_role_assignment |
Definiciones de roles | Microsoft.Authorization/roleDefinitions |
azurerm_role_definition |
El número exacto de recursos que el módulo crea depende de la configuración del módulo. En el caso de una configuración predeterminada, puede esperar que el módulo cree aproximadamente 180
recursos.
Sugerencia
Ninguno de estos recursos se implementa en el ámbito de la suscripción, pero Terraform igualmente requiere una suscripción para establecer una sesión autenticada con Azure. Para obtener más información sobre la autenticación con Azure, consulte Documentación de Proveedor de Azure: Autenticación en Azure.
Recursos de administración
El módulo proporciona una opción para habilitar la implementación de recursos de administración y supervisión de recursos desde la arquitectura conceptual de las zonas de aterrizaje de Azure en la suscripción especificada, como se describe en la Configuración del proveedor. El módulo garantiza que la suscripción especificada se coloque en el grupo de administración adecuado.
Al habilitar la implementación de los recursos de administración, el módulo implementa y administra los siguientes tipos de recursos (dependiendo de la configuración):
Recurso | Tipo de recurso de Azure | Tipo de recurso de Terraform |
---|---|---|
Grupos de recursos | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Área de trabajo de Log Analytics | Microsoft.OperationalInsights/workspaces |
azurerm_log_analytics_workspace |
Soluciones de Log Analytics | Microsoft.OperationsManagement/solutions |
azurerm_log_analytics_solution |
Cuenta de Automation | Microsoft.Automation/automationAccounts |
azurerm_automation_account |
Servicio vinculado de Log Analytics | Microsoft.OperationalInsights/workspaces /linkedServices |
azurerm_log_analytics_linked_service |
Además de implementar los recursos anteriores, el módulo proporciona integración nativa en las asignaciones de directivas correspondientes para garantizar el cumplimiento completo de las directivas.
Para más información sobre cómo usar esta funcionalidad, consulte la página wiki Implementación de recursos de administración.
Recursos de conectividad
El módulo proporciona una opción para habilitar la implementación de recursos de topología de red y conectividad desde la arquitectura conceptual de las zonas de aterrizaje de Azure en el contexto de la suscripción actual. También garantiza que la suscripción especificada se coloque en el grupo de administración adecuado.
Esta funcionalidad permite la implementación de varias redes de centro de conectividad basadas en cualquier combinación de topología de red tradicional de Azure (hub-and-spoke) y topología de red de Virtual WAN (administrada por Microsoft).
El módulo también puede crear y vincular Protección de red contra DDoS a las redes virtuales y administrar Zonas DNS públicas y privadas centralizadas.
Nota
Actualmente no se recomienda la protección de IP contra DDoS en las zonas de aterrizaje de Azure y se recomienda usar esta opción en circunstancias concretas. Revise la documentación del producto Acerca de la comparación de SKU de Azure DDoS Protection.
Topología tradicional de redes de Azure (hub-and-spoke)
Opcionalmente, el módulo puede implementar una o varias redes de centro de conectividad basadas en la topología de red tradicional de Azure (centro de conectividad y radio).
Nota
Actualmente, el módulo solo configura el centro de conectividad de redes y los recursos dependientes de la suscripción de conectividad. Aunque existe una opción para habilitar el emparejamiento de red virtual de salida del concentrador al radio, los usuarios siguen teniendo que iniciar el emparejamiento del radio al concentrador. Esto se debe a limitaciones en la forma en la que el proveedor de AzureRM se dirige a una suscripción específica para la implementación.
Al implementar recursos basados en una topología de red tradicional de Azure (centro de conectividad y radio), el módulo implementa y administra los siguientes tipos de recursos (según la configuración):
Recurso | Tipo de recurso de Azure | Tipo de recurso de Terraform |
---|---|---|
Grupos de recursos | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Redes virtuales | Microsoft.Network/virtualNetworks |
azurerm_virtual_network |
Subredes | Microsoft.Network/virtualNetworks/subnets |
azurerm_subnet |
Puertas de enlace de red virtual | Microsoft.Network/virtualNetworkGateways |
azurerm_virtual_network_gateway |
Instancias de Azure Firewall | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Direcciones IP públicas | Microsoft.Network/publicIPAddresses |
azurerm_public_ip |
Emparejamientos de red virtual | Microsoft.Network/virtualNetworks/virtualNetworkPeerings |
azurerm_virtual_network_peering |
Para más información sobre cómo usar esta funcionalidad, consulte la página de wiki Implementación de recursos de conectividad.
Topología de red de Virtual WAN (administrada por Microsoft)
Opcionalmente, el módulo puede implementar una o varias redes de centro de conectividad basadas en la topología de red de Virtual WAN (administrada por Microsoft).
Nota:
Dadas las diferentes funcionalidades de los recursos de red de Virtual WAN con respecto a los tradicionales, el emparejamiento de radios de Virtual WAN es bidireccional si se usa esta funcionalidad.
Si se implementan recursos basados en una topología de red de Virtual WAN (administrada por Microsoft), el módulo implementa y administra los siguientes tipos de recursos (en función de la configuración):
Recurso | Tipo de recurso de Azure | Tipo de recurso de Terraform |
---|---|---|
Grupos de recursos | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Redes WAN virtuales | Microsoft.Network/virtualWans |
azurerm_virtual_wan |
Centros virtuales | Microsoft.Network/virtualHubs |
azurerm_virtual_hub |
Puertas de enlace de ExpressRoute | Microsoft.Network/expressRouteGateways |
azurerm_express_route_gateway |
Puertas de enlace de VPN | Microsoft.Network/vpnGateways |
azurerm_vpn_gateway |
Instancias de Azure Firewall | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Directivas de Azure Firewall | Microsoft.Network/firewallPolicies |
azurerm_firewall_policy |
Conexiones de centro virtual | Microsoft.Network/virtualHubs/hubVirtualNetworkConnections |
azurerm_virtual_hub_connection |
Para más información sobre cómo usar esta funcionalidad, consulte la página de wiki Implementación de recursos de Virtual WAN.
Plan de Azure DDoS Protection
El módulo puede implementar opcionalmente la Protección de red de DDoS y vincular redes virtuales al plan si es necesario.
Nota:
Dadas las limitaciones de la plataforma, los planes de DDoS Protection solo se pueden habilitar para redes virtuales tradicionales. Actualmente no hay compatibilidad con centros virtuales.
Importante
La guía de zonas de aterrizaje de Azure recomienda habilitar la protección de red contra DDoS para aumentar la protección de su plataforma de Azure. Para evitar costos inesperados en implementaciones que no son de producción y MVP, esta funcionalidad se deshabilita en el módulo Terraform de las zonas de aterrizaje de Azure debido al costo asociado a este recurso.
En entornos de producción, se recomienda encarecidamente habilitar esta funcionalidad.
Al habilitar la implementación de los recursos de un plan de Azure DDoS Protection, el módulo implementa y administra los siguientes tipos de recursos (dependiendo de la configuración):
Recurso | Tipo de recurso de Azure | Tipo de recurso de Terraform |
---|---|---|
Grupos de recursos | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Planes de DDoS Protection | Microsoft.Network/ddosProtectionPlans |
azurerm_network_ddos_protection_plan |
DNS
Opcionalmente, el módulo puede implementar zonas DNS privadas que admitan puntos de conexión privados y vincularlas a redes virtuales con topología en estrella tipo hub-and-spoke. Las zonas DNS públicas y privadas especificadas por el usuario también se pueden implementar y vincular según sea necesario.
Al habilitar la implementación de los recursos de DNS, el módulo implementa y administra los siguientes tipos de recursos (en función de la configuración):
Recurso | Tipo de recurso de Azure | Tipo de recurso de 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 |
Vínculo de red virtual de zona DNS privada | Microsoft.Network/privatednszones/virtualnetworklinks |
azurerm_private_dns_zone_virtual_network_link |
Recursos de identidad
El módulo proporciona una opción para configurar directivas relacionadas con la administración de identidades y acceso. También garantiza que la suscripción especificada se coloque en el grupo de administración adecuado.
Nota:
Esta funcionalidad no implementa ningún recurso. Si desea actualizar la configuración de directiva relacionada con el grupo de administración de identidades, use la variable de entrada configure_identity_resources
.
Para más información sobre cómo usar esta funcionalidad, consulte la página de wiki Implementación de recursos de identidad.
Introducción
Los requisitos para empezar a trabajar con el módulo se documentan en la página se wiki Introducción.
Para simplificar el inicio, el módulo se ha publicado en el Registro de Terraform. Puede hacer referencia a él directamente dentro del código, como se muestra en el ejemplo sencillo más adelante en este artículo. La ejecución de terraform init
descargará automáticamente el módulo y todas las dependencias.
Puede ver el módulo y las dependencias del proveedor más recientes en la pestaña Dependencias del Registro de Terraform.
Importante
Existen varios problemas conocidos con ciertas combinaciones de versiones de Terraform y del proveedor de AzureRM. Puede resolver algunos problemas conocidos mediante la actualización a las versiones más recientes de Terraform y el proveedor AzureRM. Otros problemas conocidos son errores transitorios que normalmente se pueden corregir al volver a ejecutar la implementación.
Por lo general, se recomienda usar siempre versiones específicas y hacer pruebas exhaustivas antes realizar cualquier actualización.
Publicaremos versiones nuevas del módulo cuando se necesiten cambios. Las nuevas versiones principales garantizarán la compatibilidad con las versiones más recientes de Terraform y del proveedor de AzureRM. Para más información, consulte las instrucciones deVersiones de módulos.
Para obtener las características más recientes, asegúrese de que la versión del módulo esté establecida en la versión más reciente. Si va a actualizar a una versión posterior del módulo, ejecute terraform init -upgrade
.
Ejemplo sencillo
Este código de ejemplo implementa el mínimo recomendado del grupo de administración y de la organización de suscripción de la arquitectura de referencia a escala empresarial. Una vez que este sencillo ejemplo esté en funcionamiento, puede empezar a personalizar la implementación.
Sugerencia
Aunque root_parent_id
es la única variable obligatoria del módulo, se recomienda establecer también root_id
. Al cambiar el valor root_id
se iniciará una nueva implementación completa de todos los recursos administrados por el módulo, incluidas las dependencias de nivel inferior.
El código siguiente es una configuración inicial sencilla para el módulo raíz 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
}
Pasos siguientes
El módulo de Terraform para escala empresarial de Cloud Adoption Framework proporciona una manera rápida de crear las zonas de aterrizaje de escala empresarial. También proporciona la flexibilidad de expandir y personalizar la implementación, a la vez que conserva un enfoque simplificado para administrar la configuración de cada zona de aterrizaje.
Para más información, consulte el módulo en el Registro de Terraform y explore la documentación del módulo en GitHub. En la documentación, encontrará más ejemplos y tutoriales sobre cómo personalizar su implementación.
Aprenda a implementar el módulo de Terraform para las zonas de aterrizaje de Azure mediante HashiCorp Learn. Una vez allí, también puede descubrir cómo funcionan algunas partes del módulo.