Uso de Terraform para crear zonas de aterrizajeUse Terraform to build your landing zones

Azure proporciona servicios nativos para implementar las zonas de aterrizaje.Azure provides native services for deploying your landing zones. Otras herramientas de terceros también pueden ayudarle con este trabajo.Other third-party tools can also help with this effort. Una herramienta de este tipo que los clientes y asociados suelen usar para implementar zonas de aterrizaje es Terraform de HashiCorp.One such tool that customers and partners often use to deploy landing zones is Terraform by HashiCorp. En esta sección se muestra cómo usar una zona de aterrizaje de ejemplo para implementar funcionalidades de gobernanza, contabilidad y seguridad fundamentales para una suscripción de Azure.This section shows how to use a sample landing zone to deploy foundational governance, accounting, and security capabilities for an Azure subscription.

Propósito de la zona de aterrizajePurpose of the landing zone

La zona de aterrizaje básica de Cloud Adoption Framework para Terraform presenta características para aplicar las funcionalidades de registro, contabilidad y seguridad.The Cloud Adoption Framework foundations landing zone for Terraform provides features to enforce logging, accounting, and security. Esta zona de aterrizaje usa componentes estándar conocidos como módulos de Terraform para aplicar la coherencia entre los recursos implementados en el entorno.This landing zone uses standard components known as Terraform modules to enforce consistency across resources deployed in the environment.

Uso de módulos estándarUse standard modules

La reutilización de componentes es un principio fundamental de la infraestructura como código.Reuse of components is a fundamental principle of infrastructure as code. 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.Modules are instrumental in defining standards and consistency across resource deployment within and across environments. Los módulos usados para implementar esta primera zona de aterrizaje están disponible en el registro de Terraform oficial.The modules used to deploy this first landing zone are available in the official Terraform registry.

Diagrama de la arquitecturaArchitecture diagram

La primera zona de aterrizaje implementa los siguientes componentes en su suscripción:The first landing zone deploys the following components in your subscription:

Zona de aterrizaje básica con Terraform Figura 1: Zona de aterrizaje básica con Terraform.Foundational landing zone using Terraform Figure 1: A foundation landing zone using Terraform.

CapacidadesCapabilities

Los componentes implementados y su finalidad incluyen lo siguiente:The components deployed and their purpose include the following:

ComponenteComponent ResponsabilidadResponsibility
Grupos de recursosResource groups Grupos de recursos principales necesarios para la baseCore resource groups needed for the foundation
Registro de actividadActivity logging Realizar la auditoría de todas las actividades de suscripción y el archivado:Auditing all subscription activities and archiving:
  • Cuenta de almacenamientoStorage account
  • Azure Event HubsAzure Event Hubs
  • Registro de diagnósticoDiagnostics logging Registros de todas las operaciones que se mantienen durante un número específico de días:All operation logs kept for a specific number of days:
  • Cuenta de almacenamientoStorage account
  • Event HubsEvent Hubs
  • Log AnalyticsLog Analytics Almacenar los registros de operaciones.Stores the operation logs. Implementar soluciones comunes para la revisión profunda de los procedimientos recomendados de aplicaciones:Deploy common solutions for deep application best practices review:
  • NetworkMonitoringNetworkMonitoring
  • AdAssessmentAdAssessment
  • AdReplicationAdReplication
  • AgentHealthAssessmentAgentHealthAssessment
  • DnsAnalyticsDnsAnalytics
  • KeyVaultAnalyticsKeyVaultAnalytics
  • Azure Security CenterAzure Security Center Métricas de higiene de seguridad y alertas enviadas al correo electrónico y al número de teléfonoSecurity hygiene metrics and alerts sent to email and phone number

    Uso de este plano técnicoUse this blueprint

    Antes de usar la zona de aterrizaje básica de Cloud Adoption Framework, revise los supuestos, las decisiones y las instrucciones de implementación siguientes.Before you use the Cloud Adoption Framework foundation landing zone, review the following assumptions, decisions, and implementation guidance.

    SupuestosAssumptions

    Las siguientes suposiciones o restricciones se tuvieron en cuenta cuando se definió esta zona de aterrizaje inicial.The following assumptions or constraints were considered when this initial landing zone was defined. Si estas suposiciones van acordes con las restricciones, puede usar el plano técnico para crear la primera zona de aterrizaje.If these assumptions align with your constraints, you can use the blueprint to create your first landing zone. El plano técnico también se puede ampliar para crear un plano técnico de la zona de aterrizaje que cumpla las restricciones únicas.The blueprint also can be extended to create a landing zone blueprint that meets your unique constraints.

    • Límites de suscripción: no es probable que este trabajo de adopción supere los límites de suscripción.Subscription limits: This adoption effort is unlikely to exceed subscription limits. Dos indicadores comunes constituyen un exceso de 25 000 máquinas virtuales o 10 000 vCPU.Two common indicators are an excess of 25,000 VMs or 10,000 vCPUs.
    • Cumplimiento: no se necesita ningún requisito de cumplimiento de terceros para esta zona de aterrizaje.Compliance: No third-party compliance requirements are needed for this landing zone.
    • Complejidad de la arquitectura: la complejidad de la arquitectura no requiere suscripciones de producción adicionales.Architectural complexity: Architectural complexity doesn't require additional production subscriptions.
    • Servicios compartidos: no hay servicios compartidos en Azure que requieran que esta suscripción se trate como un radio en una arquitectura en estrella tipo hub-and-spoke.Shared services: No existing shared services in Azure require this subscription to be treated like a spoke in a hub and spoke architecture.

    Si estas suposiciones coinciden con su entorno actual, este plano técnico podría ser un buen punto de partida para empezar a crear la zona de aterrizaje.If these assumptions match your current environment, this blueprint might be a good way to start building your landing zone.

    Decisiones de diseñoDesign decisions

    Las siguientes decisiones se representan en los módulos de CAF Terraform:The following decisions are represented in the CAF Terraform modules:

    ComponenteComponent DecisionesDecisions Enfoques alternativosAlternative approaches
    Registro y supervisiónLogging and monitoring Se utiliza el área de trabajo de Log Analytics de Azure Monitor.Azure Monitor Log Analytics workspace is used. Se aprovisionará una cuenta de almacenamiento de diagnósticos y un centro de eventos.A diagnostics storage account as well as event hub is provisioned.
    RedNetwork N/A: la red se implementa en otra zona de aterrizaje.N/A - network is implemented in another landing zone. Decisiones respecto a las redesNetworking decisions
    IdentidadIdentity Se da por sentado que la suscripción ya está asociada a una instancia de Azure Active Directory.It's assumed that the subscription is already associated with an Azure Active Directory instance. Procedimientos recomendados de administración de identidadesIdentity management best practices
    DirectivaPolicy En la actualidad, en esta zona de aterrizaje se da por hecho que no se aplicará ninguna directiva de Azure.This landing zone currently assumes that no Azure policies are to be applied.
    Detalles de la suscripciónSubscription design N/A: diseñado para una sola suscripción de producción.N/A - designed for a single production subscription. Creación de las suscripciones inicialesCreate initial subscriptions
    Grupos de recursosResource groups N/A: diseñado para una sola suscripción de producción.N/A - designed for a single production subscription. Escalado de suscripcionesScale subscriptions
    Grupos de administraciónManagement groups N/A: diseñado para una sola suscripción de producción.N/A - designed for a single production subscription. Organización de suscripcionesOrganize subscriptions
    dataData N/DN/A Elección de la opción correcta de SQL Server en Azure y Guía de un almacén de datos para AzureChoose the correct SQL Server option in Azure and Azure data store guidance
    StorageStorage N/DN/A Guía de Azure StorageAzure Storage guidance
    Estándares de nomenclaturaNaming standards Cuando se crea el entorno, también se crea un prefijo único.When the environment is created, a unique prefix is also created. Los recursos que requieren un nombre único global (como las cuentas de almacenamiento) utilizan este prefijo.Resources that require a globally unique name (such as storage accounts) use this prefix. El nombre personalizado se anexa con un sufijo aleatorio.The custom name is appended with a random suffix. El uso de etiquetas se ordena como se describe en la tabla siguiente.Tag usage is mandated as described in the following table. Procedimientos recomendados de nomenclatura y etiquetadoNaming and tagging best practices
    Administración de costosCost management N/DN/A Seguimiento de costosTracking costs
    ProcesoCompute N/DN/A Opciones de procesoCompute options

    Estándares de etiquetadoTagging standards

    El conjunto de etiquetas mínimas siguiente debe estar presente en todos los recursos y grupos de recursos:The minimum set of tags shown below must be present on all resources and resource groups:

    Nombre de etiquetaTag name DescripciónDescription ClaveKey Valores de ejemploExample values
    Unidad de negocioBusiness unit División de nivel superior de la empresa que posee la suscripción o la carga de trabajo a la que pertenece el recurso.Top-level division of your company that owns the subscription or workload the resource belongs to. BusinessUnit finance, marketing, <product-name>, corp, sharedfinance, marketing, <product-name>, corp, shared
    Centro de costosCost center Centro de costo de contabilidad asociado a este recurso.Accounting cost center associated with this resource. CostCenter <cost-center-number>
    Recuperación ante desastresDisaster recovery Importancia empresarial de la aplicación, la carga de trabajo o el servicio.Business criticality of the application, workload, or service. DR dr-enabled, non-dr-enableddr-enabled, non-dr-enabled
    EntornoEnvironment Entorno de implementación de la aplicación, la carga de trabajo o el servicio.Deployment environment of the application, workload, or service. Env prod, dev, qa, staging, test, trainingprod, dev, qa, staging, test, training
    Nombre del propietarioOwner name Propietario de la aplicación, la carga de trabajo o el servicio.Owner of the application, workload, or service. Owner email
    Tipo de implementaciónDeployment type Define cómo se mantienen los recursos.Defines how the resources are being maintained. DeploymentType manual, terraformmanual, terraform
    VersiónVersion Versión del plano técnico implementado.Version of the blueprint deployed. Version v0.1
    Nombre de la aplicaciónApplication name Nombre de la aplicación, el servicio o la carga de trabajo que se ha asociado al recurso.Name of the associated application, service, or workload associated with the resource. ApplicationName <app-name>

    Personalizar e implementar la primera zona de aterrizajeCustomize and deploy your first landing zone

    Puede clonar la zona de aterrizaje básica de Terraform.You can clone your Terraform foundation landing zone. Empiece trabajar fácilmente con la zona de aterrizaje mediante la modificación de las variables de Terraform.Get started easily with the landing zone by modifying the Terraform variables. En nuestro ejemplo, usamos blueprint_foundations.sandbox.auto.tfvars, de modo que Terraform establece automáticamente los valores de este archivo.In our example, we use blueprint_foundations.sandbox.auto.tfvars, so Terraform automatically sets the values in this file for you.

    Echemos un vistazo a las diferentes secciones de variables.Let's look at the different variable sections.

    En este primer objeto, se crean dos grupos de recursos en la región southeastasia, denominados -hub-core-sec y -hub-operations, junto con un prefijo agregado en tiempo de ejecución.In this first object, we create two resource groups in the southeastasia region named -hub-core-sec and -hub-operations along with a prefix added at runtime.

    resource_groups_hub = {
        HUB-CORE-SEC    = {
            name = "-hub-core-sec"
            location = "southeastasia"
        }
        HUB-OPERATIONS  = {
            name = "-hub-operations"
            location = "southeastasia"
        }
    }
    

    A continuación, se especifican las regiones en las que se pueden establecer las bases.Next, we specify the regions where we can set the foundations. En este caso, se utiliza southeastasia para implementar todos los recursos.Here, southeastasia is used to deploy all the resources.

    location_map = {
        region1   = "southeastasia"
        region2   = "eastasia"
    }
    

    A continuación, se especifica el período de retención para los registros de operaciones y los registros de suscripción de Azure.Then, we specify the retention period for the operations logs and the Azure subscription logs. Estos datos se almacenan en cuentas de almacenamiento independientes y en un centro de eventos, cuyos nombres se generan de forma aleatoria, ya que deben ser únicos.This data is stored in separate storage accounts and an event hub, whose names are randomly generated because they must be unique.

    azure_activity_logs_retention = 365
    azure_diagnostics_logs_retention = 60
    

    En tags_hub, se especifica el conjunto mínimo de etiquetas que se aplican a todos los recursos creados.Into the tags_hub, we specify the minimum set of tags that are applied to all resources created.

    tags_hub = {
        environment     = "DEV"
        owner           = "Arnaud"
        deploymentType  = "Terraform"
        costCenter      = "65182"
        BusinessUnit    = "SHARED"
        DR              = "NON-DR-ENABLED"
    }
    

    A continuación, se especifica el nombre de la instancia de Log Analytics y un conjunto de soluciones que analizan la implementación.Then, we specify the Log Analytics name and a set of solutions that analyze the deployment. Aquí se conservan las características de supervisión de red, Active Directory Assessment, replicación de Active Directory, DNS Analytics y Key Vault Analytics.Here, we retained network monitoring, Active Directory assessment and replication, DNS Analytics, and Key Vault analytics.

    
    analytics_workspace_name = "lalogs"
    
    solution_plan_map = {
        NetworkMonitoring = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/NetworkMonitoring"
        },
        ADAssessment = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/ADAssessment"
        },
        ADReplication = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/ADReplication"
        },
        AgentHealthAssessment = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/AgentHealthAssessment"
        },
        DnsAnalytics = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/DnsAnalytics"
        },
        KeyVaultAnalytics = {
            "publisher" = "Microsoft"
            "product"   = "OMSGallery/KeyVaultAnalytics"
        }
    }
    
    

    A continuación, se configuran los parámetros de alerta de Azure Security Center.Next, we configured the alert parameters for Azure Security Center.

    # Azure Security Center Configuration
    security_center = {
        contact_email   = "joe@contoso.com"
        contact_phone   = "+6500000000"
    }
    

    Realizar acciónTake action

    Una vez que haya revisado la configuración, podrá implementar la configuración como implementaría un entorno de Terraform.After you've reviewed the configuration, you can deploy the configuration as you would deploy a Terraform environment. Se recomienda usar el róver, que es un contenedor de Docker que permite la implementación desde Windows, Linux o MacOS.We recommend that you use the rover, which is a Docker container that allows deployment from Windows, Linux, or macOS. Puede empezar a trabajar con las zonas de aterrizaje.You can get started with the landing zones.

    Pasos siguientesNext steps

    La zona de aterrizaje básica establece la base para un entorno complejo de forma descompuesta.The foundation landing zone lays the groundwork for a complex environment in a decomposed manner. Esta edición proporciona un conjunto de funcionalidades sencillas que se pueden ampliar agregando otros módulos al plano técnico o superponiendo zonas de aterrizaje adicionales sobre ella.This edition provides a set of simple capabilities that can be extended by adding other modules to the blueprint or layering additional landing zones on top of it.

    La distribución en capas de las zonas de aterrizaje es un buen procedimiento para desacoplar sistemas, realizar el control de versiones de cada componente que utiliza, y permitir la innovación rápida y la estabilidad para su implementación de infraestructura como código.Layering your landing zones is a good practice for decoupling systems, versioning each component that you're using, and allowing fast innovation and stability for your infrastructure as code deployment.

    Las arquitecturas de referencia futuras mostrarán este concepto para una topología de concentrador y radio.Future reference architectures will demonstrate this concept for a hub and spoke topology.