Zum Inhalt

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_configuration braucht 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.