Zum Inhalt

Modulreferenz des Spoke canvas

Das Terraform des Spoke canvas hat zwei Root-Module: deploy/subscription und deploy/spoke, beide in src/Xebia.Mcp/Files/terraform/spoke-canvas/ des Code-Repositorys (Aufbau). Die pipelines füllen ihre Variablen; du führst sie normalerweise nicht von Hand aus. Diese Seite gruppiert die Inputs nach Zweck, listet die Module auf und zeigt, was die Outputs enthalten. Sie ist eine Lesehilfe: Die generierten Tabellen im README jedes Root-Moduls (erzeugt mit terraform-docs) bleiben die exakte Quelle.

Wie das Ergebnis aussieht, steht unter Spoke canvas: was ein Deployment erstellt. Zum JSON, das es steuert, siehe die Spoke-JSON-Referenz.

Subscription-Root (deploy/subscription)

Der subscription-layer bereitet die subscription für einen spoke vor: Er ist der Schritt vor dem spoke canvas. Er ruft das Modul subscription auf und gibt die subscription-ID aus, die der canvas-layer dann verwendet. Das Design dahinter steht unter Subscription-Provisioning.

Input Erforderlich Zweck
FileName ja Pfad der spoke-JSON-Datei
IncrementName nein (Standard 001) Inkrementwert für generierte Namen. Die Quellen beschreiben ihn nicht weiter
TenantId ja Tenant der subscription
xmscsp_billing_account_name, xmscsp_subscription, xmscsp_tenant, xmscspclient_id, xmscspclient_secret ja Billing Account und Service Principal, die nötig sind, um eine subscription zu erstellen (CSP-Weg)
Output Enthält
subscriptionId Die ID der subscription für den spoke

Die pipeline übergibt leere CSP-Werte

Die CSP-Inputs existieren, weil der Code eine subscription erstellen kann, wenn azureSubscriptionId leer ist. Die pipelines übergeben die fünf CSP-Werte als leere Strings, die subscription muss also vor dem Lauf existieren (Neuer spoke).

Spoke-Root (deploy/spoke)

Inputs nach Zweck

Zweck Input Erforderlich Beschreibung
Spoke-Definition FileName ja Pfad zur JSON-Konfigurationsdatei des Spokes
subscriptionOutputFileName ja Pfad zur JSON-Datei mit dem Output des subscription-layers
subscription_id nein subscription-ID, wenn sie direkt angegeben wird
IncrementName nein (Standard 001) Inkrementwert für generierte Namen. Die Quellen beschreiben ihn nicht weiter
spoke_canvas_version nein Versionskennung des Spoke-canvas-Codes. Wird als tag spoke_canvas_version geschrieben
Deployment-Identität xmscsp_tenant, xmscsp_subscription ja Tenant und subscription, gegen die das Deployment läuft
xmscspclient_id, xmscspclient_secret ja Client-ID und Secret der Deployment-Identität
Namens-Overrides overwrite_KeyVault, overwrite_KeyVaultPE, overwrite_StorageAccount, overwrite_StorageAccountPE, overwrite_LogAnalytics, overwrite_AutomationAccount, overwrite_DefaultNSGName, overwrite_VWanConnection, overwrite_SubscriptionName nein Ersetzen den generierten Namen einer Ressource. null behält den Standardnamen
GitHub-Integration ghinfo nein Objekt mit BaseUrl, OrganizationName und OidcIssuer des GitHub-Hosts
github_app_id nein GitHub-App-ID, für die App-Authentifizierung der GitHub-Provider. Wird in CI/CD als TF_VAR_github_app_id übergeben. Nicht setzen, um Token-Authentifizierung zu verwenden
github_app_installation_id nein Installations-ID der GitHub App in der Plattform-Organisation
github_app_installation_id_workload nein Installations-ID in der Organisation, die das Workload-Repository enthält. Entspricht der Plattform-Installation, wenn beide in derselben Organisation liegen
github_token nein Token für die Repository-Verwaltung. In CI/CD normalerweise ein kurzlebiges Installations-Token der GitHub App, übergeben als TF_VAR_github_token
integration_module_source nein Git-Quelle der Integrationsmodule, die die GitHub- und Shared-Service-Extensions verwenden. Hat einen Standardwert; überschreibe ihn, wenn deine Plattform die Module anderswohin synchronisiert

Secrets als Variablen

xmscspclient_secret, github_token und die Zugangsdaten der GitHub App sind Secrets. Übergib sie aus dem Secret Store der pipeline über TF_VAR_*-Variablen. Lege sie niemals in einer spoke-Datei oder einer tfvars-Datei im Konfigurations-Repository ab.

Module

Der Spoke-Root ist eine Komposition. Module nach Bereich:

Bereich Module Was sie tun
Subscription subscription_managementgroup, subscription_rename, subscription_tags Die subscription in der management group platzieren, umbenennen, tags anwenden
Identität und Zugriff privileges_adgroups, privileges_service_principal, privileges_roleassignments, pim_group_config, storespnsecret Die Entra-ID-Gruppen und den Service Principal erstellen, Rollen zuweisen, PIM für die Gruppen konfigurieren, das Secret des Service Principals im Key Vault speichern
Resource Groups resourcegroup, resourcegroup_networkwatcher Die Resource Group pro Region und die dedizierte Gruppe für Network Watcher
Netzwerk virtualnetwork, virtualnetworkvhublink, networkwatcher Netzwerk, Subnets, NSGs und Route Tables, die Virtual-Hub-Verbindung, Network Watcher
Private DNS private_dns_zone, private_dns_zone_vnet_link_hub Eine optionale private DNS zone für den spoke, verknüpft mit dem Netzwerk des hub-DNS-Resolvers
Ressourcen für den Workload keyvault, storageaccount, loganalyticsworkspace Key Vault, Storage Account (mit Customer-Managed Key), Log-Analytics-Workspace
Azure DevOps AzureDevOps Optionales Repository und optionale Service Connection
Erweiterungen apim_configuration, acr_configuration, servicebus_configuration, eventhub_configuration, github_repository_configuration, github_integration_configuration Optionale Nutzung von Shared Services und das GitHub-Repository mit seinen Federated Credentials

Neben den Modulen erstellt der Root einen Azure-Monitor-Activity-Log-Alert für Policy-Operationen. Die Quellen beschreiben weder seinen Auslöser noch seine Action Group.

Outputs

Outputs sind die Übergabe zwischen den layers und die Informationen, die eine pipeline anzeigen oder weitergeben kann. Die Quellen listen nur die Namen auf, ohne Beschreibung:

Output Berichtet über
workloadinfo Den Workload des Spokes
resourcegroup Die Resource Groups
networking Die Netzwerkressourcen
keyvault Das Key Vault
storage_account Den Storage Account
loganalytics Den Log-Analytics-Workspace
groups Die Entra-ID-Gruppen des Spokes
ProductTeamGroups Die Team-Gruppen, die Zugriff bekommen haben
privileges Die Rollenzuweisungen
spn Den Service Principal

Führe terraform output auf einem spoke-state aus, um den exakten Inhalt für deine Version zu sehen, und prüfe ihn, bevor du dich in einem Skript darauf verlässt. Behandle den Output spn als sensibel, bis du weißt, dass er kein Secret enthält.

Provider und Versionen

Der Spoke-Root fixiert exakte Provider-Versionen, wie jedes Root-Modul (Tools).

Provider Verwendet für
azurerm, azapi Azure-Ressourcen
azuread Gruppen, Service Principals, PIM
azuredevops Repository und Service Connection
github Repository und Federated Credentials
external, time Unterstützende Lookups und Timing

Zum Zeitpunkt der Extraktion verlangte der Spoke-Root Terraform 1.9.2 oder höher. Die exakten Versionen pro Release stehen im README des Root-Moduls in der Version, die du fixiert hast.

Einstellungen, die für alle spokes gelten

Einstellungen, die für jeden spoke gelten, werden einmal gehalten und nicht in jeder spoke-Datei wiederholt. In der aktuellen Plattform stehen sie in mcp.json unter SpokeCommon (mcp.json). Im älteren, separaten Spoke canvas lagen sie in einer Datei common.tf. Die Gruppen von Einstellungen sind dieselben:

Gruppe Enthält
Tenant-Informationen (tenantinfo) Tenant, ID der Administrative Unit, Präfix für Gruppennamen, Gültigkeit der Secrets der Service Principals in Tagen. Eine Änderung der Gültigkeit erzeugt neue Secrets für alle Service Principals der spokes
Netzwerk Die subscription des zentralen Virtual Hub und optional die IPAM-Pools von Azure Virtual Network Manager, aus denen spoke-Dateien Adressraum zuweisen dürfen
Regionen Pro Region: Azure-Regionsname, Anzeigename, DNS-Server (normalerweise die hub-firewall in dieser Region), Resource-ID des Virtual Hub, Resource-ID des zentralen Log-Analytics-Workspace
PIM-Konfigurationen Die benannten PIM-Profile nopim, self-approve und approval
Overrides für die PIM-Rollenzuordnung Optional, siehe Data-Plane-Zugriff über PIM
GitHub-Host (ghinfo) Base-URL, Organisation und OIDC-Issuer des GitHub-Hosts. Für GitHub.com ist der OIDC-Issuer https://token.actions.githubusercontent.com
Shared Services Die subscription der Shared Services, die die Extensions verwenden

Ein IPAM-Pool ist regional, nenne den Pool also mit seiner Region, wenn du mehr als eine Region hast. Spoke-Dateien, die keinen Pool verwenden, behalten ihre festen Adresspräfixe, was weiterhin unterstützt wird. Eine spoke-Datei verwendet entweder addressPrefix oder einen ipamPool mit numberOfIpAddresses, nicht beides. Wenn ein Virtual Network einen Pool verwendet, erben seine Subnets ihn und geben nur numberOfIpAddresses an; ein Subnet in einem Netzwerk mit festem Adresspräfix kann keine Pool-Zuweisung anfordern.

Prüfe die Feldnamen für deine Version

Die Namen in dieser Tabelle stammen aus dem älteren Layout. Schau in der Spoke-JSON-Referenz und in mcp.json deines Konfigurations-Repositorys nach, welche Namen deine Version verwendet.