Zonas de aterrizaje de Azure: consideraciones de diseño de módulos de Terraform
En este artículo se describen las áreas importantes que se deben tener en cuenta al usar el módulo Terraform de las zonas de aterrizaje de Azure. El módulo proporciona un enfoque fundamentado para implementar y operar una plataforma de Azure basada en la arquitectura conceptual de la zona de aterrizaje de Azure, tal como se detalla en el Cloud Adoption Framework (CAF).
Terraform es una herramienta de infraestructura de código abierto como código (IaC), creada por HashiCorp, que usa sintaxis declarativa para implementar recursos de infraestructura. Es extensible, tiene compatibilidad multiplataforma y permite una infraestructura inmutable a través del seguimiento de estado.
Importante
El módulo está disponible en el módulo Terraform Registry: zonas de aterrizaje de Azure. Puede usarla como punto de partida y configurarla según sus necesidades.
Nota
Hay implementaciones para varias tecnologías de implementación, como las basadas en el portal, plantillas de ARM y módulos de Terraform. La elección de la tecnología de implementación no debe influir en la implementación resultante de las zonas de aterrizaje de Azure.
Acelerador ALZ Terraform
Para empezar a implementar rápidamente ALZ con Terraform, puede aprovechar el Acelerador ALZ Terraform diseñado para usarse como plantilla. Este repositorio proporciona una implementación auxiliar del módulo Terraform de zonas de aterrizaje de Azure, con canalizaciones de Azure DevOps y flujos de trabajo de acciones de GitHub.
El Acelerador ALZ Terraform sigue un enfoque de tres fases:
- Requisitos previos: instrucciones para configurar credenciales y suscripciones.
- Arranque: ejecute el script de PowerShell para generar el entorno de entrega continua.
- Ejecución: actualice el módulo (si es necesario) para que se adapte a las necesidades de su organización e impleméntelo a través de la entrega continua.
Comience con la guía del usuario con un paso a paso para poner en funcionamiento el entorno de la zona de aterrizaje de Azure.
Diseño
La arquitectura aprovecha la naturaleza configurable de Terraform y se compone de un módulo de orquestación principal. Este módulo encapsula múltiples capacidades de la arquitectura conceptual de las zonas de aterrizaje de Azure. Puede implementar cada funcionalidad individualmente o en parte. Por ejemplo, puede implementar solo una red de concentrador, solo Azure DDoS Protection o solo los recursos DNS. Al hacerlo, debe tener en cuenta que las funcionalidades tienen dependencias.
La arquitectura utiliza un enfoque de orquestador para simplificar la experiencia de implementación. Es posible que prefiera implementar cada funcionalidad mediante una o varias instancias de módulo dedicadas en las que cada una de ellas se dedica a una parte específica de la arquitectura. Esto es todo posible con la configuración correcta
Módulos
Un concepto central en Terraform es el uso de módulos. Los módulos permiten organizar las implementaciones en agrupaciones lógicas. Con los módulos, mejora la legibilidad de los archivos de Terraform mediante la encapsulación de detalles complejos de la implementación. También puede reutilizar fácilmente módulos para distintas implementaciones.
La capacidad de volver a usar módulos ofrece una ventaja real al definir e implementar zonas de aterrizaje. Permite entornos repetibles y coherentes en el código, a la vez que reduce el esfuerzo necesario para realizar la implementación a gran escala.
La implementación de Terraform de las zonas de aterrizaje de Azure se entrega mediante un único módulo que actúa como una capa de orquestación. La capa de orquestación permite seleccionar qué recursos se implementan y administran mediante el módulo. El módulo se puede usar varias veces en el mismo entorno para implementar recursos independientemente entre sí. Esto puede ser útil en organizaciones en las que diferentes equipos son responsables de las distintas funcionalidades o colecciones de subrecursos.
Capas y almacenamiento provisional
La implementación se centra en la jerarquía de recursos central de la arquitectura conceptual de la zona de aterrizaje de Azure. El diseño se centra en las siguientes funcionalidades:
- Recursos principales
- Recursos de administración
- Recursos de conectividad
- Recursos de identidad
El módulo agrupa los recursos en estas funcionalidades, ya que están diseñados para implementarse juntos. Estos grupos forman fases lógicas de la implementación.
Puede controlar la implementación de cada una de estas funcionalidades mediante marcas de características. Una ventaja de este enfoque es la capacidad de ampliar el entorno de forma incremental en el tiempo. Por ejemplo, puede empezar con un número reducido de capacidades. Puede agregar las funcionalidades restantes en una fase posterior cuando esté listo.
Recursos principales
La funcionalidad de recursos principales del módulo se alinea con el área de diseño de la organización de recursos de la Cloud Adoption Framework. Implementa los recursos fundamentales de la arquitectura conceptual para las zonas de aterrizaje de Azure.
Arquetipos
Un concepto importante dentro de la funcionalidad de recursos principales es la inclusión de arquetipos.
Los arquetipos proporcionan un enfoque reutilizable basado en código para definir qué definiciones de directiva, definiciones de conjuntos de directivas, asignaciones de directivas, definiciones de roles y asignaciones de roles deben aplicarse en un ámbito determinado. En la implementación de Terraform, estas decisiones se encapsulan como definiciones de arquetipo.
Para crear una zona de aterrizaje, los grupos de administración se asocian a una definición de arquetipo. En el ejemplo siguiente de una zona de aterrizaje corp, el archetype_config tiene un puntero a la definición de arquetipo "es_corp". Esa definición contiene todas las configuraciones de directiva y rol que se agregarán a este grupo de administración.
es_corp_landing_zones = {
"contoso-corp" = {
display_name = "Corp"
parent_management_group_id = "contoso-landing-zones"
subscription_ids = []
archetype_config = {
archetype_id ="es_corp"
parameters = {}
access_control = {}
}
}
Cuando los arquetipos integrados no se alinean con sus requisitos, el módulo proporciona opciones para crear nuevos arquetipos o realizar cambios en los existentes.
Recursos de administración
La funcionalidad de recursos principales del módulo se alinea con el área de diseño de la organización de recursos de la Cloud Adoption Framework. Esta funcionalidad proporciona la opción de implementar recursos de administración y supervisión en la zona de aterrizaje de la plataforma de administración.
Recursos de conectividad
La funcionalidad de recursos de conectividad del módulo proporciona la opción de implementar la topología de red y la conectividad de la arquitectura conceptual para las zonas de aterrizaje de Azure.
Recursos de identidad
La funcionalidad de recursos de identidad del módulo se alinea con el área de diseño de administración de identidades y acceso de Azure del Cloud Adoption Framework. Esta funcionalidad proporciona la opción de configurar directivas en la zona de aterrizaje de la plataforma de identidad.
Nota:
No hay recursos implementados con esta capacidad. Cuando la variable deploy_identity_resources
se establece en true, se configuran las asignaciones de Azure Policy que protegen los recursos en la suscripción de la zona de aterrizaje de la plataforma de identidad.
Descripciones de los módulos
En esta sección se proporciona información general de alto nivel de los recursos implementados por este módulo.
Nivel | Tipo(s) de recurso(s) | Descripción | Vínculos útiles |
---|---|---|---|
Core | Grupos de administración | Los grupos de administración son los recursos de nivel más alto de un inquilino de Azure. Los grupos de administración le permiten administrar más fácilmente los recursos. Puede aplicar la directiva en el nivel de grupo de administración y los recursos de nivel inferior la heredarán. En concreto, puede aplicar los siguientes elementos en el nivel de grupo de administración para que los hereden las suscripciones del grupo de administración:
|
|
Core | Definiciones de políticas, asignaciones de políticas y definiciones de conjuntos de políticas | Las directivas DeployIfNotExists (DINE) o Modify ayudan a garantizar que las suscripciones y los recursos que componen las zonas de aterrizaje son compatibles. Las directivas se asignan a grupos de administración mediante asignaciones de directivas. Las directivas facilitan la administración de las zonas de aterrizaje. Conjuntos de definiciones de conjuntos de directivas. No todos los clientes pueden usar directivas DINE o Modify. Si es así, en la guía de CAF sobre directivas personalizadas se proporcionan instrucciones. |
|
Core | Definiciones de roles y asignaciones de roles | El control de acceso basado en rol (RBAC) simplifica la administración de los derechos de usuario dentro de un sistema. En lugar de administrar los derechos de cada individuo, determina los derechos necesarios para diferentes roles del sistema. RBAC de Azure tiene varios roles integrados. Las definiciones de roles personalizados permiten crear roles personalizados para el entorno. La administración de identidad y acceso (IAM) es el límite de seguridad principal de la informática en la nube pública. Azure RBAC permite realizar asignaciones de roles de roles integrados o definiciones de roles personalizados a entidades de servicio, identidades administradas o grupos de seguridad entre grupos de administración y suscripciones. |
|
Administración | Azure Monitor, Azure Automation y Microsoft Sentinel | Azure Monitor, Azure Automation y Microsoft Sentinel permiten supervisar y administrar la infraestructura y las cargas de trabajo. Azure Monitor es una solución que permite recopilar, analizar y actuar sobre la telemetría del entorno. Microsoft Sentinel es una solución de administración de eventos e información de seguridad (SIEM) nativa de nube. Eso le permite lo siguiente:
Azure Automation es un sistema de automatización basado en la nube. Incluye:
|
|
Conectividad | Tipos de recursos de red principales que se enumeran aquí | La topología de red es una consideración clave en las implementaciones de zonas de aterrizaje de Azure. CAF se centra en dos enfoques de red principales:
|
|
Conectividad | Azure DDoS Protection | En la guía de la zona de aterrizaje de Azure se recomienda habilitar la Protección de red contra DDoS de Azure. Este servicio ofrece protección llave en mano frente a ataques DDoS. | |
Conectividad | Zonas DNS, zonas de DNS privado y vínculo de DNS privado zona Virtual Network | Se pueden implementar zonas de DNS privado para soportar el uso de puntos de conexión privados. Un punto de conexión privado es una NIC a la que se le asigna una dirección IP privada de la red virtual. Puede usar la dirección IP privada para comunicarse de forma segura con los servicios que admiten Azure Private Link. Las zonas de DNS privado se pueden configurar para resolver el nombre de dominio completo (FQDN) del servicio a la dirección IP privada del punto final. |
Uso del módulo de Terraform
Implementación de recursos principales
De forma predeterminada, el módulo implementará la siguiente jerarquía, que es el conjunto principal de grupos de administración de zonas de aterrizaje:
- Root
- Plataforma
- Identidad
- Administración
- Conectividad
- Zonas de aterrizaje
- Dados de baja
- Espacio aislado
- Plataforma
Los grupos de administración de zonas de aterrizaje de SAP, Corp y Online no se aplican a todos para que no se implementen de forma predeterminada. A continuación se muestran formas de implementarlas:
- Con fines de demostración, puede establecer la variable
deploy_demo_landing_zones
en true que implementará zonas de aterrizaje de SAP, Corp y Online. - Para fines de producción, puede activar los grupos de administración que desee estableciendo las siguientes variables en true:
deploy_corp_landing_zones
deploy_online_landing_zones
deploy_sap_landing_zones
- Puede implementar sus propios grupos de administración de zonas de aterrizaje personalizadas mediante la creación de una definición de zona de aterrizaje personalizada.
Implementación de recursos de administración
Para implementar los recursos de administración, la variable deploy_management_resources
debe establecerse en true y la variable subscription_id_management
debe establecerse en el identificador de la suscripción de administración donde se van a implementar los recursos.
deploy_management_resources = true
subscription_id_management = <management subscription id>
Implementación de recursos de conectividad
Implementar recursos de conectividad proporciona instrucciones sobre cómo implementar estas topologías.
Implementación de recursos de identidad
Para implementar la funcionalidad de identidad, la variable deploy_identity_resources
debe establecerse en true y la variable subscription_id_identity
debe establecerse en el identificador de la suscripción de identidad donde se van a configurar las directivas.
deploy_identity_resources = true
subscription_id_identity = <identity subscription id>
Personalización de la implementación de Terraform
Las implementaciones de zonas de aterrizaje de Azure proporcionadas como parte de Cloud Adoption Framework se adaptan a una amplia variedad de requisitos y casos de uso. Pero a menudo hay escenarios en los que se necesita personalización para satisfacer necesidades empresariales específicas.
Sugerencia
Para más información, consulte Adaptación de la arquitectura de zona de aterrizaje de Azure para cumplir los requisitos.
El módulo Terraform de zonas de aterrizaje de Azure se puede usar como base de la implementación personalizada. Proporciona una manera de acelerar la implementación mediante la eliminación de la necesidad de empezar desde cero debido a un cambio necesario específico que establece una opción lista para usar.
La información sobre la personalización de los módulos está disponible en la wiki del repositorio de GitHub GitHub: Zonas de aterrizaje de Azure Módulo Terraform - Wiki. Puede usarla como punto de partida y configurarla según sus necesidades.