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:

Diagrama de 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.

Diagrama de la arquitectura conceptual de las zonas de aterrizaje de Azure que se centra en la jerarquía de recursos principal.

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.

Diagrama de la arquitectura conceptual de las zonas de aterrizaje de Azure que se centra en los recursos de administración.

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

Diagrama de la arquitectura conceptual de las zonas de aterrizaje de Azure que se centra en los recursos de conectividad que usan una 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).

Diagrama de la arquitectura conceptual de las zonas de aterrizaje de Azure que se centra en los recursos de conectividad que usan una topología de red tradicional 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.

Diagrama de la arquitectura conceptual de las zonas de aterrizaje de Azure que se centra en los recursos de identidades.

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.

Versión de GitHub (SemVer más reciente)

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.