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 oderUnlock-XebiaLocal -Config $config -SpokeFilePaths @('<file>')für einen Spoke. Das Spoke-Unlock wirkt nur, wenn$WhatIfPreferenceauf$falsesteht; 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.