Zum Inhalt

Gemeinsame Spoke-Einstellungen (common.tf)

Einstellungen, die für jeden spoke gleich sind, werden einmal definiert und nicht in jeder spoke-Datei. Das spoke-JSON enthält dann nur noch das, was für einen workload spezifisch ist. Diese Seite listet die gemeinsamen Einstellungen auf, was sie bewirken und wo sie liegen.

Wo die gemeinsamen Einstellungen liegen

Im separaten spoke-canvas-Deployment (eigenes Repository und eigene pipeline) sind die gemeinsamen Einstellungen eine Terraform-Datei namens common.tf mit einem locals-Block. Im aktuellen Plattform-Layout ist der Teil, der Tenant und Shared Services betrifft, Teil von mcp.json unter SpokeCommon (mcp.json). Die Namen der Einstellungen sind dieselben. Prüfe in der Code-Version, die du fixiert hast, welche der folgenden Einstellungen dein Layout liest und wo. Die Upgrade-Leitfäden für das spoke canvas zeigen die ältere Form common.tf.

Übersicht

Block Zweck Pflicht
tenantinfo Tenant, Administrative Unit, Präfix der Gruppennamen und Secret-Rotation ja
networking Hub-subscription und die IPAM-Pools, aus denen spokes Adressraum zuweisen lassen dürfen ja (ipam_pools ist optional)
regioninfo Pro Region: Namen, DNS-Server, Virtual Hub, zentraler Log-Analytics-Workspace ja
pim_configurations Benannte PIM-Profile, auf die PIMGroupConfig verweist ja, ab spoke canvas 2.10
override_defaults.pim_assignments Überschreibungen der eingebauten RBAC role map pro Rolle nein
ghinfo GitHub-Organisation, Base-URL und OIDC-Issuer für die GitHub-Extension nur mit der GitHub-Extension

tenantinfo

Einstellung Beschreibung
TenantId ID des Tenants, in dem Gruppen erstellt werden. Muss der Tenant sein, der die spoke-subscriptions enthält.
AdministrativeUnitId Object ID der Administrative Unit, die die spoke-Gruppen enthält (Identität vorbereiten).
GroupnamePrefix Präfix jeder Gruppe, die das Deployment erstellt, zum Beispiel SG_SPOKE_.
SPNSecretrotationPeriod Gültigkeit des Secrets jedes Spoke-Service-Principals, in Tagen.
NewSubscriptionDefaultManagementGroupId Standard-management-group für neue subscriptions. In der Beispieldatei vorhanden; prüfe, wie deine Version sie verwendet.

Den Rotationszeitraum ändern

Wenn du SPNSecretrotationPeriod änderst, erzwingt das beim nächsten Lauf neue Secrets für alle Service Principals, die das spoke-Deployment steuert. Plane es als Änderung mit einem Wartungsfenster und stelle sicher, dass die Verbraucher der Secrets (zum Beispiel service connections) den neuen Wert übernehmen (Spoke ändern).

networking

Einstellung Beschreibung
virtualhubsubscriptionid ID der subscription, die die Virtual Hubs enthält, mit denen sich spoke-Netzwerke verbinden.
ipam_pools Optionale Map von Azure-Virtual-Network-Manager-IPAM-Pools, aus denen spokes Adressraum zuweisen lassen dürfen. Key: der Name, den eine spoke-Datei in ipamPool verwendet. Value: die vollständige Resource-ID des Pools.

Die Resource-IDs der Pools meldet das Foundation-Deployment der Plattform als Output network_manager_ipam_environment_pool_ids (siehe Feature flags für deploy_network_manager).

  • IPAM-Pools sind regional. Nimm die Region in den Key auf, wenn mehr als eine Region einen Pool hat, zum Beispiel dev-weu.
  • Nur Pools aus dieser Map können verwendet werden. Ein spoke, der einen unbekannten Pool nennt, lässt den Plan fehlschlagen, und der Fehler listet die verfügbaren Namen auf.
  • Lässt du die Map weg, bleibt jeder spoke bei fest codierten Adresspräfixen. Das bleibt voll unterstützt.

Wie ein spoke einen Pool nutzt: Spoke-JSON-Referenz.

regioninfo

Ein Eintrag pro Region. Der Key des Eintrags ist der Kurzname der Region, den spoke-Dateien verwenden (targetRegions, network[].region). Er ist keine Property. Keys müssen eindeutig sein.

Einstellung Beschreibung
azregionname Azure-Name der Region, zum Beispiel westeurope.
regionfriendlyname Anzeigename, zum Beispiel West Europe.
dnsserver IP-Adresse des DNS-Servers für spoke-Netzwerke in der Region. Normalerweise die interne Adresse der Hub-firewall in dieser Region (der DNS-Proxy). Ein spoke kann sie mit dnsServerOverwrite überschreiben.
virtualhub_resourceid Vollständige Resource-ID des Virtual Hubs in der Region, mit dem sich spoke-Netzwerke verbinden.
centrallaw_resourceid Vollständige Resource-ID des zentralen Log-Analytics-Workspace, in den Ressourcen des spokes loggen, zum Beispiel für die Weiterleitung des Activity Logs.

pim_configurations

Eine Map benannter PIM-Profile. Jedes Profil legt einen Zuweisungstyp fest (active oder eligible). Bei eligible-Profilen legt es außerdem die Aktivierungs-Policy und, falls nötig, Genehmiger fest. Ein spoke verweist über den Namen auf ein Profil, sodass die vollständige Policy nicht in jeder spoke-Datei wiederholt wird. Die Einstellung notifications wird akzeptiert, aber derzeit nicht verwendet.

Die Standardprofile sind nopim, self-approve und approval. Ihre Definition steht im Upgrade-Leitfaden. Wie Profile und Rollen zusammenspielen, steht in RBAC und PIM für spokes.

override_defaults.pim_assignments

Optional. Ändert die eingebaute RBAC role map für alle spokes. Siehe RBAC und PIM für spokes.

ghinfo

Nur nötig, wenn spokes die GitHub-Extension nutzen. Die Werte sind der Default für jeden spoke; ein spoke kann organization und oidc_issuer überschreiben.

Einstellung Beschreibung
OrganizationName GitHub-Organisation, in der Repositorys erstellt werden.
OidcIssuer OIDC-Issuer-URL, der die Federated Credentials vertrauen.
BaseUrl Base-URL der GitHub-Instanz.
Instanz OidcIssuer BaseUrl
GitHub.com https://token.actions.githubusercontent.com https://github.com/
GitHub Enterprise Server https://<github host>/_services/token https://<github host>/

Bereite zuerst die GitHub-Seite vor: Spoke-Integrationen vorbereiten.

Beispiel

Ein gekürztes Beispiel mit Platzhaltern. Eine echte Datei hat einen Eintrag pro Region.

locals {
  tenantinfo = {
    TenantId                = "<tenant-id>"
    AdministrativeUnitId    = "<administrative-unit-object-id>"
    GroupnamePrefix         = "SG_SPOKE_"
    SPNSecretrotationPeriod = 90
  }

  networking = {
    virtualhubsubscriptionid = "<hub-subscription-id>"

    ipam_pools = {
      dev-weu = "<resource id of the IPAM pool for dev in West Europe>"
      prd-weu = "<resource id of the IPAM pool for prd in West Europe>"
    }
  }

  regioninfo = {
    weu = {
      azregionname          = "westeurope"
      regionfriendlyname    = "West Europe"
      dnsserver             = "<firewall private IP in the region>"
      virtualhub_resourceid = "<resource id of the virtual hub>"
      centrallaw_resourceid = "<resource id of the central Log Analytics workspace>"
    }
  }

  # pim_configurations: see the upgrade guide
  # override_defaults, ghinfo: only when you need them
}