Zum Inhalt

Naming und Terraform state

Namensbestandteile

Bestandteil Variable (<env-folder>/global.auto.tfvars oder <region>/global.auto.tfvars) Beispiel
<company> scaffold_company_short_name demo
<env> scaffold_environment canary, prod
<envshort> scaffold_environment_short_name cnry, prod
<region> scaffold_location_short_name (Region-Datei) weu
Regionsname scaffold_location (Region-Datei) westeurope

Die meisten Namen lassen sich mit einer overwrite_*-Variable im selben layer überschreiben. Namen, die in diesem Leitfaden vorkommen:

Ressource Standardname Quelle
Connectivity resource group rg-<company>-connectivity-<env>-<region>-001 infra/deploy/firewall/locals.tf, connectivity/locals.tf
Firewall policy afwp-<company>-connectivity-<env>-<region>-001 infra/deploy/firewall/locals.tf
App Gateway resource group rg-<company>-appgw-<env>-<region>-001 infra/deploy/connectivity/locals.tf
WAF policy resource group rg-<company>-agw-<env>-<region>-001 infra/templates/web_application_firewall_policy/main.tf
App Gateway Key Vault kv<company>agw<envshort><region>001 infra/templates/application_gateway/main.tf
App Gateway Identity / Public IP uai-<company>-agw-<env>-<region>-001 / pip-<company>-agw-<env>-<region>-001 dieselbe
Plattform-action groups ag-<company>-mgmtgeneral-<env>-<region>-001, ag-<company>-mgmtxpirit-<env>-<region>-001 infra/templates/monitor/main.tf
Hub-24/7-action group / -Regel ag-<company>-hub247-<env>-<region>-001 / apr-<company>-hub247-<env>-<region>-001 infra/deploy/connectivity/main.tf
Zuweisungen der Alert-initiatives alerting_servicehealth, alerting_management, alerting_landingzone, alerting_identity, alerting_connectivity infra/deploy/postdeployment/main_policies_alerts.tf

Spoke-Namen (spoke-canvas/deploy/spoke/locals.tf)

Ressource Standardname
Resource group rg-canvas-<wl>-<env>-<region>-001
Log Analytics log-<wl>-<env>-<region>-001
Key Vault kv<wl><env><region>001
Storage account st<wl><env><region>001
Hub-Verbindung Der VNet-Name, in dem vnet- durch con- ersetzt wird, es sei denn overwritePeeringConnectionName ist gesetzt (modules/virtual_network/locals.tf)
Entra ID-Gruppen <GroupnamePrefix><wl>_<env>_Owners / _Contributors / _Readers / _Support
Service Principal <SPNNamePrefix><wl>-<env>

<wl> und <env> sind workloadShortName und environment aus dem Spoke-JSON in Kleinschreibung. Die Namen von Key Vault und Storage account müssen in Azure global eindeutig sein.

Terraform state

Was Storage (mcp.json) Key
Hub layer Azure.TerraformState.Hub <env>-<region>-<layer>.tfstate
Spoke-subscription-layer Azure.TerraformState.Spoke <wl>_<env>_Subscription.tfstate
Spoke-canvas-layer Azure.TerraformState.Spoke spoke_<wl>_<env>.tfstate

<env> im Hub-Key ist der Name des Ordners, der mcp.json enthält. Das Backend ist azurerm mit use_azuread_auth=true (src/Xebia.Mcp/Functions/Private/Terraform/Invoke-XebiaTerraformBackend.ps1).

Hängender state lock

Ein abgebrochener Lauf kann eine Blob-Lease auf einer state-Datei zurücklassen. Symptom: Error acquiring the state lock.

  • Lokal, im Dev Container (siehe Einen einzelnen layer lokal ausführen): Unlock-XebiaLocal -Config $config -DeployName <layer> -Region <region> für einen hub layer oder Unlock-XebiaLocal -Config $config -SpokeFilePaths @('<file>') für einen Spoke. Das Spoke-Unlock wirkt nur, wenn $WhatIfPreference auf $false steht; das Hub-Unlock funktioniert auch im WhatIf-Modus.
  • Portal: Storage account → Container → state blob → Break lease.

Brich eine Lease nur auf, wenn du sicher bist, dass kein Lauf mehr aktiv ist.