Verwenden von Terraform zum Erstellen Ihrer ZielzonenUse Terraform to build your landing zones

Azure bietet native Dienste zum Bereitstellen Ihrer Zielzonen.Azure provides native services for deploying your landing zones. Andere Tools von Drittanbietern können dabei ebenfalls helfen.Other third-party tools can also help with this effort. Ein solches Tool, das Kunden und Partner häufig zum Bereitstellen von Zielzonen verwenden, ist Terraform von HashiCorp.One such tool that customers and partners often use to deploy landing zones is Terraform by HashiCorp. In diesem Abschnitt wird gezeigt, wie Sie mit einer Beispielzielzone grundlegende Governance-, Kontoführungs- und Sicherheitsfunktionen für ein Azure-Abonnement bereitstellen.This section shows how to use a sample landing zone to deploy foundational governance, accounting, and security capabilities for an Azure subscription.

Zweck der ZielzonePurpose of the landing zone

Die Cloud Adoption Framework-Grundlagenzielzone für Terraform bietet Features zur Durchsetzung von Protokollierung, Kontoführung und Sicherheit.The Cloud Adoption Framework foundations landing zone for Terraform provides features to enforce logging, accounting, and security. Diese Zielzone verwendet als Terraform-Module bezeichnete Standardkomponenten, um die Konsistenz der in der Umgebung bereitgestellten Ressourcen zu erzwingen.This landing zone uses standard components known as Terraform modules to enforce consistency across resources deployed in the environment.

Verwenden von StandardmodulenUse standard modules

Die Wiederverwendung von Komponenten ist ein grundlegendes Prinzip von Infrastructure-as-Code.Reuse of components is a fundamental principle of infrastructure as code. Die Module dienen zum Definieren von Standards und Konsistenz der gesamten Ressourcenbereitstellung inner- und außerhalb von Umgebungen.Modules are instrumental in defining standards and consistency across resource deployment within and across environments. Die zum Bereitstellen dieser ersten Zielzone verwendeten Module sind in der offiziellen Terraform-Registrierung verfügbar.The modules used to deploy this first landing zone are available in the official Terraform registry.

ArchitekturdiagrammArchitecture diagram

In der ersten Zielzone werden die folgenden Komponenten in Ihrem Abonnement bereitgestellt:The first landing zone deploys the following components in your subscription:

Grundlegende Zielzone mit Terraform Abbildung 1: Grundlegende Zielzone mit TerraformFoundational landing zone using Terraform Figure 1: A foundation landing zone using Terraform.

FunktionenCapabilities

Die bereitgestellten Komponenten und ihre Zwecke sind:The components deployed and their purpose include the following:

KomponenteComponent VerantwortlichkeitResponsibility
RessourcengruppenResource groups Kernressourcengruppen, die für die Grundlage benötigt werdenCore resource groups needed for the foundation
AktivitätsprotokollierungActivity logging Überwachung aller Abonnementaktivitäten und Archivierung:Auditing all subscription activities and archiving:
  • SpeicherkontoStorage account
  • Azure Event HubsAzure Event Hubs
  • DiagnoseprotokollierungDiagnostics logging Alle Vorgangsprotokolle, die für eine bestimmte Anzahl von Tagen beibehalten werden:All operation logs kept for a specific number of days:
  • SpeicherkontoStorage account
  • Event HubsEvent Hubs
  • Log AnalyticsLog Analytics Speichert die Vorgangsprotokolle.Stores the operation logs. Bereitstellen allgemeiner Lösungen zum umfassenden Überprüfen der bewährten Methoden von Anwendungen:Deploy common solutions for deep application best practices review:
  • NetworkMonitoringNetworkMonitoring
  • AdAssessmentAdAssessment
  • AdReplicationAdReplication
  • AgentHealthAssessmentAgentHealthAssessment
  • DnsAnalyticsDnsAnalytics
  • KeyVaultAnalyticsKeyVaultAnalytics
  • Azure Security CenterAzure Security Center Sicherheitsmetriken und -warnungen, die an E-Mailadressen und Telefonnummern gesendet werdenSecurity hygiene metrics and alerts sent to email and phone number

    Verwenden dieser BlaupauseUse this blueprint

    Bevor Sie die grundlegende Cloud Adoption Framework-Zielzone verwenden, überprüfen Sie die folgenden Annahmen, Entscheidungen und Leitlinien für die Implementierung.Before you use the Cloud Adoption Framework foundation landing zone, review the following assumptions, decisions, and implementation guidance.

    AnnahmenAssumptions

    Beim Definieren dieser anfänglichen Landezone wurden folgende Annahmen bzw. Einschränkungen berücksichtigt.The following assumptions or constraints were considered when this initial landing zone was defined. Wenn diese Annahmen Ihren Einschränkungen entsprechen, können Sie die Blaupause zum Erstellen Ihrer ersten Landezone verwenden.If these assumptions align with your constraints, you can use the blueprint to create your first landing zone. Die Blaupause kann auch erweitert werden, sodass Sie eine Landezonenblaupause erstellen können, die Ihre einzigartigen Einschränkungen erfüllt.The blueprint also can be extended to create a landing zone blueprint that meets your unique constraints.

    • Grenzwerte für Abonnements: Bei der Einführung ist unwahrscheinlich, dass Abonnementgrenzwerte überschritten werden.Subscription limits: This adoption effort is unlikely to exceed subscription limits. Zwei allgemeine Anzeichen dafür sind eine VM-Anzahl von über 25.000 oder eine vCPU-Anzahl von über 10.000.Two common indicators are an excess of 25,000 VMs or 10,000 vCPUs.
    • Compliance: Für diese Landezone sind keine Complianceanforderungen von Dritten zu beachten.Compliance: No third-party compliance requirements are needed for this landing zone.
    • Komponenten der Architektur: Die Komplexität der Architektur erfordert keine zusätzlichen Produktionsabonnements.Architectural complexity: Architectural complexity doesn't require additional production subscriptions.
    • Gemeinsam genutzte Dienste: Keiner der vorhandenen gemeinsam genutzten Dienste in Azure erfordert, dass dieses Abonnement wie ein Spoke in einer Hub-and-Spoke-Architektur behandelt wird.Shared services: No existing shared services in Azure require this subscription to be treated like a spoke in a hub and spoke architecture.

    Wenn diese Annahmen mit Ihrer aktuellen Umgebung übereinstimmen, kann diese Blaupause ein guter Ausgangspunkt für die Erstellung Ihrer Zielzone sein.If these assumptions match your current environment, this blueprint might be a good way to start building your landing zone.

    EntwurfsentscheidungenDesign decisions

    Die folgenden Entscheidungen werden in den CAF Terraform-Modulen widergespiegelt:The following decisions are represented in the CAF Terraform modules:

    KomponenteComponent EntscheidungenDecisions Alternative AnsätzeAlternative approaches
    Protokollierung und ÜberwachungLogging and monitoring Der Log Analytics-Arbeitsbereich von Azure Monitor wird verwendet.Azure Monitor Log Analytics workspace is used. Ein Diagnosespeicherkonto und ein Event Hub werden bereitgestellt.A diagnostics storage account as well as event hub is provisioned.
    NetzwerkNetwork N/V: Das Netzwerk wird in einer anderen Zielzone implementiert.N/A - network is implemented in another landing zone. NetzwerkentscheidungenNetworking decisions
    IdentityIdentity Es wird angenommen, dass das Abonnement bereits einer Azure Active Directory-Instanz zugeordnet ist.It's assumed that the subscription is already associated with an Azure Active Directory instance. Bewährte Methoden für die IdentitätsverwaltungIdentity management best practices
    RichtliniePolicy Bei dieser Zielzone wird derzeit davon ausgegangen, dass keine Azure-Richtlinien angewendet werden müssen.This landing zone currently assumes that no Azure policies are to be applied.
    AbonnemententwurfSubscription design N/V: Wurde für ein einzelnes Produktionsabonnement entworfen.N/A - designed for a single production subscription. Erstellen der anfänglichen AbonnementsCreate initial subscriptions
    RessourcengruppenResource groups N/V: Wurde für ein einzelnes Produktionsabonnement entworfen.N/A - designed for a single production subscription. Skalieren von AbonnementsScale subscriptions
    VerwaltungsgruppenManagement groups N/V: Wurde für ein einzelnes Produktionsabonnement entworfen.N/A - designed for a single production subscription. Organisieren von AbonnementsOrganize subscriptions
    DatenData N/A Auswählen der richtigen Bereitstellungsoption in Azure SQL und Auswählen des richtigen DatenspeichersChoose the correct SQL Server option in Azure and Azure data store guidance
    StorageStorage N/A Leitfaden zu Azure StorageAzure Storage guidance
    BenennungsstandardsNaming standards Wenn die Umgebung erstellt wird, wird auch ein eindeutiges Präfix erstellt.When the environment is created, a unique prefix is also created. Für Ressourcen, die einen global eindeutigen Namen benötigen (z. B. Speicherkonten), wird dieses Präfix verwendet.Resources that require a globally unique name (such as storage accounts) use this prefix. Dem benutzerdefinierten Namen wird ein zufälliges Suffix angefügt.The custom name is appended with a random suffix. Tags müssen wie in der folgenden Tabelle beschrieben verwendet werden.Tag usage is mandated as described in the following table. Best Practices zur Benennung und KennzeichnungNaming and tagging best practices
    KostenverwaltungCost management N/A Nachverfolgen von KostenTracking costs
    ComputeCompute N/A ComputeoptionenCompute options

    KennzeichnungsstandardsTagging standards

    Bei allen Ressourcen und Ressourcengruppen müssen mindestens die folgenden Tags vorhanden sein:The minimum set of tags shown below must be present on all resources and resource groups:

    TagnameTag name BESCHREIBUNGDescription SchlüsselKey BeispielwerteExample values
    GeschäftseinheitBusiness unit Oberste Abteilung Ihres Unternehmens, die Besitzer des Abonnements oder der Workload ist, zu dem oder der die Ressource gehört.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
    KostenstelleCost center Buchhaltungskostenstelle, die dieser Ressource zugeordnet ist.Accounting cost center associated with this resource. CostCenter <cost-center-number>
    NotfallwiederherstellungDisaster recovery Geschäftliche Bedeutung der Anwendung, Workload oder dieses Diensts.Business criticality of the application, workload, or service. DR dr-enabled, non-dr-enableddr-enabled, non-dr-enabled
    EnvironmentEnvironment Bereitstellungsumgebung der Anwendung, Workload oder dieses Diensts.Deployment environment of the application, workload, or service. Env prod, dev, qa, staging, test, trainingprod, dev, qa, staging, test, training
    Name des BesitzersOwner name Besitzer der Anwendung, der Workload oder des Diensts.Owner of the application, workload, or service. Owner email
    BereitstellungstypDeployment type Definiert, wie die Ressourcen verwaltet werden.Defines how the resources are being maintained. DeploymentType manual, terraformmanual, terraform
    VersionVersion Version der bereitgestellten Blaupause.Version of the blueprint deployed. Version v0.1
    AnwendungsnameApplication name Der Name der Anwendung, des Diensts oder der Workload, womit die Ressource verknüpft ist.Name of the associated application, service, or workload associated with the resource. ApplicationName <app-name>

    Anpassen und Bereitstellen Ihrer ersten ZielzoneCustomize and deploy your first landing zone

    Sie können Ihre grundlegende Terraform-Zielzone klonen.You can clone your Terraform foundation landing zone. Beginnen Sie einfach mit der Zielzone, indem Sie die Terraform-Variablen ändern.Get started easily with the landing zone by modifying the Terraform variables. In unserem Beispiel wird blueprint_foundations.sandbox.auto.tfvars verwendet, sodass Terraform automatisch die Werte in dieser Datei für Sie festlegt.In our example, we use blueprint_foundations.sandbox.auto.tfvars, so Terraform automatically sets the values in this file for you.

    Betrachten wir nun die verschiedenen Variablenabschnitte.Let's look at the different variable sections.

    In diesem ersten Objekt erstellen wir zwei Ressourcengruppen in der southeastasia-Region mit den Namen -hub-core-sec und -hub-operations sowie ein Präfix, das zur Laufzeit hinzugefügt wird.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"
        }
    }
    

    Als nächstes geben wir die Regionen an, in denen wir die Grundlagen festlegen können.Next, we specify the regions where we can set the foundations. Hier wird southeastasia zum Bereitstellen aller Ressourcen verwendet.Here, southeastasia is used to deploy all the resources.

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

    Anschließend geben wir den Aufbewahrungszeitraum für die Vorgangsprotokolle und die Protokolle des Azure-Abonnements an.Then, we specify the retention period for the operations logs and the Azure subscription logs. Diese Daten werden in separaten Speicherkonten und einem Event Hub gespeichert, deren Namen nach dem Zufallsprinzip generiert werden, da sie eindeutig sein müssen.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
    

    In „tags_hub“ geben wir den minimalen Satz von Tags an, die auf allen erstellten Ressourcen angewendet werden.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"
    }
    

    Anschließend geben wir den Log Analytics-Namen und eine Reihe von Lösungen an, die die Bereitstellung analysieren.Then, we specify the Log Analytics name and a set of solutions that analyze the deployment. Hier wurden Netzwerküberwachung, Active Directory-Bewertung und -Replikation, DNS-Analyse und Key Vault-Analyse beibehalten.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"
        }
    }
    
    

    Als nächstes haben wir die Warnungsparameter für Azure Security Center konfiguriert.Next, we configured the alert parameters for Azure Security Center.

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

    Ausführen einer AktionTake action

    Nachdem Sie die Konfiguration überprüft haben, können Sie die Konfiguration wie eine Terraform-Umgebung bereitstellen.After you've reviewed the configuration, you can deploy the configuration as you would deploy a Terraform environment. Sie sollten den „rover“ verwenden, einen Docker-Container, der die Bereitstellung von Windows, Linux oder macOS ermöglicht.We recommend that you use the rover, which is a Docker container that allows deployment from Windows, Linux, or macOS. Sie können mit den Zielzonen beginnen.You can get started with the landing zones.

    Nächste SchritteNext steps

    Die grundlegende Zielzone bildet die Basis für eine aufgeschlüsselte komplexe Umgebung.The foundation landing zone lays the groundwork for a complex environment in a decomposed manner. Diese Edition bietet eine Reihe einfacher Funktionen, die durch Hinzufügen weiterer Blaupausenmodule oder durch Überlagern mit weiteren Zielzonen erweitert werden können.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.

    Das Überlagern mit weiteren Zielzonen ist eine bewährte Vorgehensweise, um Systeme zu entkoppeln, jede einzelne von Ihnen verwendete Komponente zu versionieren und schnelle Innovation und Stabilität für Ihre Infrastructure-as-Code-Bereitstellung zu ermöglichen.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.

    Zukünftige Referenzarchitekturen werden dieses Konzept für eine Hub-and-Spoke-Topologie veranschaulichen.Future reference architectures will demonstrate this concept for a hub and spoke topology.