Använd terraform för att bygga landnings zonerUse Terraform to build your landing zones
Azure tillhandahåller inbyggda tjänster för att distribuera landnings zoner.Azure provides native services for deploying your landing zones. Andra verktyg från tredje part kan också hjälpa dig med den här ansträngningen.Other third-party tools can also help with this effort. Ett sådant verktyg som kunder och partners ofta använder för att distribuera landnings zoner är terraform av HashiCorp.One such tool that customers and partners often use to deploy landing zones is Terraform by HashiCorp. Det här avsnittet visar hur du använder en exempel zon för att distribuera grundläggande styrnings-, redovisnings-och säkerhets funktioner för en Azure-prenumeration.This section shows how to use a sample landing zone to deploy foundational governance, accounting, and security capabilities for an Azure subscription.
Syftet med landnings zonenPurpose of the landing zone
I avsnittet om att införa ramverk för moln införande i terraform finns funktioner för att genomdriva loggning, redovisning och säkerhet.The Cloud Adoption Framework foundations landing zone for Terraform provides features to enforce logging, accounting, and security. Den här landnings zonen använder standard komponenter som kallas terraform-moduler för att tvinga fram konsekvens mellan resurser som distribueras i miljön.This landing zone uses standard components known as Terraform modules to enforce consistency across resources deployed in the environment.
Använda standardmodulerUse standard modules
Åter användning av komponenter är en grundläggande princip för infrastruktur som kod.Reuse of components is a fundamental principle of infrastructure as code. Moduler är instrumentell för att definiera standarder och konsekvens för resurs distribution inom och mellan olika miljöer.Modules are instrumental in defining standards and consistency across resource deployment within and across environments. Modulerna som används för att distribuera den första landnings zonen är tillgängliga i den officiella terraform-registret.The modules used to deploy this first landing zone are available in the official Terraform registry.
ArkitekturdiagramArchitecture diagram
Den första landnings zonen distribuerar följande komponenter i din prenumeration:The first landing zone deploys the following components in your subscription:
bild 1: en grund landnings zon med terraform.
Figure 1: A foundation landing zone using Terraform.
FunktionerCapabilities
De komponenter som distribueras och deras syfte är följande:The components deployed and their purpose include the following:
KomponentComponent | LiggerResponsibility |
---|---|
ResursgrupperResource groups | Kärn resurs grupper som behövs för stiftelsenCore resource groups needed for the foundation |
AktivitetsloggningActivity logging | Granska alla prenumerations aktiviteter och arkivering:Auditing all subscription activities and archiving: |
DiagnostikloggningDiagnostics logging | Alla åtgärds loggar som behålls under ett angivet antal dagar:All operation logs kept for a specific number of days: |
Log AnalyticsLog Analytics | Lagrar åtgärds loggarna.Stores the operation logs. Distribuera vanliga lösningar för djupgående program metod tips:Deploy common solutions for deep application best practices review: |
Azure Security CenterAzure Security Center | Mått och aviseringar för säkerhets hygien som skickas till e-post och telefonnummerSecurity hygiene metrics and alerts sent to email and phone number |
Använd den här skissenUse this blueprint
Läs igenom följande antaganden, beslut och implementerings vägledning innan du använder Cloud implementation Framework Foundation-zonen.Before you use the Cloud Adoption Framework foundation landing zone, review the following assumptions, decisions, and implementation guidance.
AntagandenAssumptions
Följande antaganden eller begränsningar ansågs när den inledande landnings zonen definierades.The following assumptions or constraints were considered when this initial landing zone was defined. Om dessa antaganden överensstämmer med dina begränsningar kan du använda skissen för att skapa din första landningszon.If these assumptions align with your constraints, you can use the blueprint to create your first landing zone. Skissen kan också utökas för att skapa en landningszonskiss som uppfyller dina unika begränsningar.The blueprint also can be extended to create a landing zone blueprint that meets your unique constraints.
- Prenumerations begränsningar: Den här antagande ansträngningen är osannolik för att överskrida prenumerations gränserna.Subscription limits: This adoption effort is unlikely to exceed subscription limits. Två vanliga indikatorer är ett överskott på 25 000 virtuella datorer eller 10 000 virtuella processorer.Two common indicators are an excess of 25,000 VMs or 10,000 vCPUs.
- Kompatibilitet: Det behövs inga krav från tredje parts efterlevnad för denna landnings zon.Compliance: No third-party compliance requirements are needed for this landing zone.
- Arkitektur komplexitet: Arkitektur komplexitet kräver inte ytterligare produktions prenumerationer.Architectural complexity: Architectural complexity doesn't require additional production subscriptions.
- Delade tjänster: Inga befintliga delade tjänster i Azure kräver att den här prenumerationen behandlas som en eker i en hubb och eker-arkitektur.Shared services: No existing shared services in Azure require this subscription to be treated like a spoke in a hub and spoke architecture.
Om dessa antaganden matchar din aktuella miljö kan den här skissen vara ett bra sätt att börja skapa din landnings zon.If these assumptions match your current environment, this blueprint might be a good way to start building your landing zone.
Design beslutDesign decisions
Följande beslut visas i CAF terraform-modulerna:The following decisions are represented in the CAF Terraform modules:
KomponentComponent | BeslutDecisions | Alternativa metoderAlternative approaches |
---|---|---|
Loggning och övervakningLogging and monitoring | Azure Monitor Log Analytics arbets ytan används.Azure Monitor Log Analytics workspace is used. Ett diagnostiskt lagrings konto samt händelsehubben är etablerad.A diagnostics storage account as well as event hub is provisioned. | |
NätverkNetwork | N/A-nätverket är implementerat i en annan landnings zon.N/A - network is implemented in another landing zone. | Nätverks beslutNetworking decisions |
IdentitetIdentity | Vi förutsätter att prenumerationen redan är associerad med en instans av Azure Active Directory.It's assumed that the subscription is already associated with an Azure Active Directory instance. | Metodtips för identitetshanteringIdentity management best practices |
PolicyPolicy | Denna landnings zon förutsätter för närvarande att inga Azure-principer ska tillämpas.This landing zone currently assumes that no Azure policies are to be applied. | |
PrenumerationsdesignSubscription design | Ej tillämpligt – utformad för en enda produktions prenumeration.N/A - designed for a single production subscription. | Skapa första prenumerationerCreate initial subscriptions |
ResursgrupperResource groups | Ej tillämpligt – utformad för en enda produktions prenumeration.N/A - designed for a single production subscription. | Skala prenumerationerScale subscriptions |
HanteringsgrupperManagement groups | Ej tillämpligt – utformad för en enda produktions prenumeration.N/A - designed for a single production subscription. | Organisera prenumerationerOrganize subscriptions |
DataData | Ej tillämpligtN/A | Välj rätt SQL Server alternativ i Azure och Azure Data Store vägledningChoose the correct SQL Server option in Azure and Azure data store guidance |
StorageStorage | Ej tillämpligtN/A | Azure Storage vägledningAzure Storage guidance |
NamngivningsreglerNaming standards | När miljön skapas skapas även ett unikt prefix.When the environment is created, a unique prefix is also created. Resurser som kräver ett globalt unikt namn (till exempel lagrings konton) använder det här prefixet.Resources that require a globally unique name (such as storage accounts) use this prefix. Det anpassade namnet läggs till med ett slumpmässigt suffix.The custom name is appended with a random suffix. Tagga användningen bestäms enligt beskrivningen i följande tabell.Tag usage is mandated as described in the following table. | Metodtips för namngivning och taggningNaming and tagging best practices |
KostnadshanteringCost management | Ej tillämpligtN/A | Spåra kostnaderTracking costs |
BeräkningCompute | Ej tillämpligtN/A | Beräknings alternativCompute options |
Tagga standarderTagging standards
Den minsta uppsättningen taggar som visas nedan måste finnas på alla resurser och resurs grupper:The minimum set of tags shown below must be present on all resources and resource groups:
TaggnamnTag name | BeskrivningDescription | NyckelKey | ExempelvärdenExample values |
---|---|---|---|
AffärsenhetBusiness unit | Avdelning på toppnivå för ditt företag som äger prenumerationen eller arbetsbelastningen som resursen tillhör.Top-level division of your company that owns the subscription or workload the resource belongs to. | BusinessUnit |
finance , marketing , <product-name> , corp , shared finance , marketing , <product-name> , corp , shared |
KostnadsställeCost center | Kostnadsställe som associeras med resursen.Accounting cost center associated with this resource. | CostCenter |
<cost-center-number> |
HaveriberedskapDisaster recovery | Programmet, arbetsbelastningen eller tjänstens affärskritiskhet.Business criticality of the application, workload, or service. | DR |
dr-enabled , non-dr-enabled dr-enabled , non-dr-enabled |
MiljöEnvironment | Programmet, arbetsbelastningen eller tjänstens distributionsmiljö.Deployment environment of the application, workload, or service. | Env |
prod , dev , qa , staging , test , training prod , dev , qa , staging , test , training |
Ägarens namnOwner name | Programmet, arbetsbelastningen eller tjänstens ägare.Owner of the application, workload, or service. | Owner |
email |
Distributions typDeployment type | Definierar hur resurserna upprätthålls.Defines how the resources are being maintained. | DeploymentType |
manual , terraform manual , terraform |
VersionVersion | Ritningens version har distribuerats.Version of the blueprint deployed. | Version |
v0.1 |
ProgramnamnApplication name | Namnet på det associerade programmet, tjänsten eller arbets belastningen som är associerad med resursen.Name of the associated application, service, or workload associated with the resource. | ApplicationName |
<app-name> |
Anpassa och distribuera din första landnings zonCustomize and deploy your first landing zone
Du kan klona din terraform Foundation-landnings zon.You can clone your Terraform foundation landing zone. Kom igång enkelt med landnings zonen genom att ändra terraform-variablerna.Get started easily with the landing zone by modifying the Terraform variables. I vårt exempel använder vi blueprint_foundations. sandbox. Auto. tfvars, så terraform ställer automatiskt in värdena i den här filen åt dig.In our example, we use blueprint_foundations.sandbox.auto.tfvars, so Terraform automatically sets the values in this file for you.
Nu ska vi titta på de olika variabel avsnitten.Let's look at the different variable sections.
I det här första objektet skapar vi två resurs grupper i southeastasia
regionen med namnet -hub-core-sec
och -hub-operations
tillsammans med ett prefix som lagts till vid körning.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"
}
}
Därefter anger vi de regioner där vi kan ställa in grunderna.Next, we specify the regions where we can set the foundations. Här southeastasia
används för att distribuera alla resurser.Here, southeastasia
is used to deploy all the resources.
location_map = {
region1 = "southeastasia"
region2 = "eastasia"
}
Sedan anger vi kvarhållningsperioden för åtgärds loggarna och Azure-prenumerations loggarna.Then, we specify the retention period for the operations logs and the Azure subscription logs. Dessa data lagras i separata lagrings konton och en Event Hub, vars namn skapas slumpmässigt eftersom de måste vara unika.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
I tags_hub anger vi den minsta uppsättning taggar som används för alla resurser som skapats.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"
}
Sedan anger vi Log Analytics namn och en uppsättning lösningar som analyserar distributionen.Then, we specify the Log Analytics name and a set of solutions that analyze the deployment. Här behålls nätverks övervakning, Active Directory utvärdering och replikering, DNS-analys och Key Vault analys.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"
}
}
Därefter konfigurerade vi aviserings parametrarna för 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"
}
Vidta åtgärdTake action
När du har granskat konfigurationen kan du distribuera konfigurationen på samma sätt som du distribuerar en terraform-miljö.After you've reviewed the configuration, you can deploy the configuration as you would deploy a Terraform environment. Vi rekommenderar att du använder Rover, som är en Docker-behållare som tillåter distribution från Windows, Linux eller macOS.We recommend that you use the rover, which is a Docker container that allows deployment from Windows, Linux, or macOS. Du kan komma igång med landnings zonerna.You can get started with the landing zones.
Nästa stegNext steps
I bas landnings zonen fördelas en komplicerad miljö på ett sammansatt sätt.The foundation landing zone lays the groundwork for a complex environment in a decomposed manner. Den här versionen innehåller en uppsättning enkla funktioner som kan utökas genom att lägga till andra moduler till skissen eller skikta ytterligare landnings zoner ovanpå den.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.
Att skikta dina landnings zoner är en bra metod för att koppla från system, versions hantering av varje komponent som du använder och möjliggör snabb innovation och stabilitet för din infrastruktur som kod distribution.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.
Framtida referens arkitekturer visar det här konceptet för en nav-och eker-topologi.Future reference architectures will demonstrate this concept for a hub and spoke topology.