Von der Discovery-Ausgabe zur Deployment-Eingabe¶
Die Plan-Phase liefert Antworten: aus einem Discovery-Workshop oder aus einem Design-Dokument. Diese Seite ordnet typische Fragen der Stelle im Konfigurations-Repository zu, an der die jeweilige Antwort eingetragen wird. Damit machst du aus einem ausgefüllten Bogen die erste Version der Konfiguration, ohne zu raten.
Die Tabelle ist generisch. Sie enthält keine Kundenwerte, und dein eigener Workshop-Bogen kann die Fragen anders formulieren.
Prüfe die Variablennamen in deiner Version
Die Namen stammen aus der Plattform zum Zeitpunkt des Schreibens. Bevor du eine Variable nutzt, prüfe, ob sie in
infra/deploy/<layer>/variables*.tf in der Code-Version deklariert ist, die du fixiert hast. Eine nicht deklarierte Variable in einer tfvars-Datei ist nur
eine Warnung, ein Tippfehler wird also stillschweigend ignoriert (Config).
Konventionen¶
| Platzhalter | Bedeutung |
|---|---|
<env-folder> |
Der Ordner, der die mcp.json einer Plattform-Umgebung enthält, zum Beispiel environments/canary oder environments/prod |
<region> |
Der Ordner einer aktiven Region, benannt nach dem Kurznamen der Region, zum Beispiel weu |
Fülle zuerst canary aus. Wenn canary funktioniert, kopiere es nach prod und ändere die Werte, die abweichen (siehe Die Plattform deployen).
Hub (Cloud Platform)¶
| Frage | Datei | Variable | Eintrag |
|---|---|---|---|
| Wie sieht das aktuelle Azure-Billing-Setup aus? Gib die Details der subscriptions an. | <env-folder>/global.auto.tfvars |
scaffold_subscriptions |
Trage die Eigenschaften der subscriptions für management, connectivity und identity ein |
| Wie lautet der Kurzname des Kunden (höchstens sechs Zeichen, wird in Namen verwendet)? | <env-folder>/global.auto.tfvars |
scaffold_company_short_name |
Der Kurzname |
| Wie heißt die Basis-management-group der Plattform? | <primary region>/foundation.auto.tfvars |
management_group_organization_id |
Die ID der management group, der Startpunkt der Hierarchie |
| Welche Region ist die primäre Region? | <env-folder>/global.auto.tfvars |
primary_region |
Der Kurzname der Region |
| Welche zusätzlichen Regionen werden gebraucht? | <env-folder>/global.auto.tfvars |
active_regions, active_regions_names |
Die Kurznamen und die passenden Azure-Regionsnamen. primary_region muss in active_regions enthalten sein. Siehe Eine Region hinzufügen. |
| Wie lang ist die Log-Aufbewahrung in Tagen für den Log-Analytics-Workspace? | <region>/management.auto.tfvars |
log_analytics_workspace_retention_in_days |
Nur nötig, wenn der Wert vom Standard von 30 Tagen abweicht |
| Wie lang ist die Soft-Delete-Aufbewahrung des Key Vault in Tagen? | <region>/management.auto.tfvars |
key_vault_soft_delete_retention_days |
Nur nötig, wenn der Wert vom Standard von 30 Tagen abweicht |
| Wird DDoS-Schutz gebraucht? | <region>/foundation.auto.tfvars |
create_network_ddos_protection_plan |
true, um den DDoS protection plan zu deployen |
<region>/connectivity.auto.tfvars, <region>/identity.auto.tfvars, <region>/management.auto.tfvars |
virtual_network_hub_ddos_protection_plan_enable |
true, um ihn auf den virtual networks dieses Layers zu aktivieren |
|
| Wird ein zweiter Alert-Empfänger gewünscht (Webhook oder E-Mail)? | <primary region>/foundation.auto.tfvars |
monitor_action_group_general_webhook_receiver oder monitor_action_group_general_email_receiver |
Die Adresse oder der Webhook (Hub-Konfiguration) |
| Wer ist der Security-Kontakt? | <region>/postdeployment.auto.tfvars |
security_contact_email |
Eine Adresse des Security-Teams des Kunden |
| Welche firewall-SKU wird gebraucht? | <region>/connectivity.auto.tfvars |
firewall_sku_tier |
Der SKU-Tier |
| Wird ein Application Gateway mit WAF gebraucht? | <region>/connectivity.auto.tfvars |
use_application_gateway_module, use_web_application_firewall_policy_module |
true für beide. Die Definitionen von Gateway und WAF sind JSON-Dateien (Application Gateway). |
| Wird ein Point-to-Site-VPN gebraucht? | <region>/connectivity.auto.tfvars |
create_point_to_site_vpn_gateway |
true |
| Werden Site-to-Site-VPN-Tunnel gebraucht? | <region>/connectivity.auto.tfvars |
create_vpn_gateway |
true |
| Wird BGP gebraucht? Welche Peer-Adressen und ASNs? | <region>/connectivity.auto.tfvars |
create_virtual_hub_bgp_connection, virtual_hub_bgp_connection_* |
true und die Peer-Werte |
| Wird ExpressRoute gebraucht? | <region>/connectivity.auto.tfvars |
create_express_route_gateway |
true |
| Wird Azure Bastion gebraucht? | <region>/connectivity.auto.tfvars |
create_bastion_host |
true |
| Welche Adressbereiche hat der hub? | <region>/connectivity.auto.tfvars |
virtual_hub_address_prefix, die Subnetze des hub-virtual-network, virtual_network_dns_servers |
Aus dem IP-Plan |
| Wird ein Alert-Routing außerhalb der Geschäftszeiten für hub-Alerts gebraucht? | <region>/connectivity.auto.tfvars |
hub_247_support |
Siehe Monitoring-Regeln |
Weitere Schalter stehen in der Referenz der feature flags und in der Anfrage Plattform-Features.
Einstellungen der Plattform-Umgebung (mcp.json)¶
| Frage | Eintrag in <env-folder>/mcp.json |
|---|---|
| Welcher Entra-ID-Tenant? | Azure.TenantId |
| Wo liegt der Terraform state (subscription, resource group, storage account, container) für den hub und für spokes? | Azure.TerraformState.Hub.* und Azure.TerraformState.Spoke.* |
| Welche Identität deployt den hub und die spokes? | Azure.TerraformState.Hub.ServicePrincipalId, Azure.TerraformState.Spoke.ServicePrincipalId |
| Wo liegen die Job Runner, wie viele, welche VM-Größe, welche Adressbereiche? | Azure.JobRunner.* |
| Welche Azure-DevOps-Organisation und welcher Agent-Pool, oder welche GitHub App? | AzureDevops.* oder GitHub.* |
| Welche Präfixe für Administrative Unit, Gruppen und Service Principals für spokes, und welcher Rotationszeitraum? | SpokeCommon.tenantinfo.* |
Die Referenz der Schlüssel steht in Config.
Spoke canvas¶
| Frage | Wo es eingetragen wird |
|---|---|
| Wie lautet die ID der Entra-ID-Administrative-Unit für spoke-Gruppen? | SpokeCommon.tenantinfo.AdministrativeUnitId in mcp.json (ältere Versionen: common.tf in der spoke-Konfiguration) |
| Welches PIM-Verhalten bekommen die spoke-Gruppen (Reader, Contributor, Owner)? | adInfo.PIMGroupConfig in jeder spoke-JSON: nopim, self-approve oder approval (Neuer spoke) |
| Welche Team-Gruppen bekommen Zugriff? | adInfo.ProductTeamGroupNames in jeder spoke-JSON |
| Muss für jeden spoke automatisch eine Service Connection oder ein Repository angelegt werden? | Der optionale Block azdo in der spoke-JSON. Lass den Block weg, wenn nicht. |
| Welche Regionen nutzt der spoke? | targetRegions in der spoke-JSON |
Praktische Regeln¶
- Fülle zuerst canary aus, mit Namen, die die Umgebung enthalten, damit du siehst, was du für prod ändern musst.
- Durchsuche das gesamte Konfigurations-Repository nach den Platzhalterwerten des Templates (zum Beispiel dem Namen des Template-Kunden und seinen subscription-IDs). Die policy-Dateien enthalten Azure-Ressourcen-IDs.
- Jeder Ordner
firewall_rule_configurationbraucht mindestens eine JSON-Datei, auch wenn die Plattform noch keine Regeln hat. Siehe Firewallregeln für die nötigen Schlüssel. - Bewahre den beantworteten Discovery-Bogen neben dem Design-Dokument auf und notiere jede Antwort, die du nicht zugeordnet hast. Das sind die Lücken aus der Plan-Phase.