Ga naar inhoud

Spoke canvas-modulereferentie

De Terraform van het spoke canvas heeft twee root modules: deploy/subscription en deploy/spoke, beide in src/Xebia.Mcp/Files/terraform/spoke-canvas/ van de coderepository (opzet). De pipelines vullen hun variabelen; je draait ze normaal niet met de hand. Deze pagina groepeert de inputs op doel, somt de modules op en laat zien wat de outputs bevatten. Het is een leesgids: de gegenereerde tabellen in de README van elke root module (gemaakt door terraform-docs) blijven de exacte bron.

Voor hoe het resultaat eruitziet, zie Spoke canvas: wat een deployment aanmaakt. Voor de JSON die het aanstuurt, zie de Spoke-JSON-referentie.

Subscription root (deploy/subscription)

De subscription layer bereidt de subscription voor een spoke voor: het is de stap vóór het spoke canvas. Hij roept de module subscription aan en geeft de subscription-ID als output, die de canvas layer daarna gebruikt. Het ontwerp erachter staat in Subscription provisioning.

Input Vereist Doel
FileName ja Pad van het spoke-JSON-bestand
IncrementName nee (standaard 001) Incrementwaarde voor gegenereerde namen. De bronnen beschrijven dit niet verder
TenantId ja Tenant van de subscription
xmscsp_billing_account_name, xmscsp_subscription, xmscsp_tenant, xmscspclient_id, xmscspclient_secret ja Billing account en service principal die nodig zijn om een subscription aan te maken (CSP-route)
Output Bevat
subscriptionId De ID van de subscription voor de spoke

De pipeline geeft lege CSP-waarden mee

De CSP-inputs bestaan omdat de code een subscription kan aanmaken als azureSubscriptionId leeg is. De pipelines geven de vijf CSP-waarden mee als lege strings, dus de subscription moet bestaan vóór de run (Nieuwe spoke).

Spoke root (deploy/spoke)

Inputs per doel

Doel Input Vereist Beschrijving
Spoke-definitie FileName ja Pad naar het JSON-configuratiebestand van de spoke
subscriptionOutputFileName ja Pad naar het JSON-bestand met de output van de subscription layer
subscription_id nee Subscription-ID, als die direct wordt meegegeven
IncrementName nee (standaard 001) Incrementwaarde voor gegenereerde namen. De bronnen beschrijven dit niet verder
spoke_canvas_version nee Versie-identifier van de spoke canvas-code. Wordt weggeschreven als de tag spoke_canvas_version
Deployment-identiteit xmscsp_tenant, xmscsp_subscription ja Tenant en subscription waartegen de deployment draait
xmscspclient_id, xmscspclient_secret ja Client ID en secret van de deployment-identiteit
Naam-overrides overwrite_KeyVault, overwrite_KeyVaultPE, overwrite_StorageAccount, overwrite_StorageAccountPE, overwrite_LogAnalytics, overwrite_AutomationAccount, overwrite_DefaultNSGName, overwrite_VWanConnection, overwrite_SubscriptionName nee Vervangen de gegenereerde naam van één resource. null behoudt de standaardnaam
GitHub-integratie ghinfo nee Object met BaseUrl, OrganizationName en OidcIssuer van de GitHub-host
github_app_id nee GitHub App-ID, voor app-authenticatie van de GitHub-providers. In CI/CD meegegeven als TF_VAR_github_app_id. Laat leeg om tokenauthenticatie te gebruiken
github_app_installation_id nee Installatie-ID van de GitHub App op de platformorganisatie
github_app_installation_id_workload nee Installatie-ID op de organisatie die de workloadrepository bevat. Gelijk aan de platforminstallatie als beide in dezelfde organisatie staan
github_token nee Token voor repositorybeheer. In CI/CD normaal een kortlevend installatietoken van een GitHub App, meegegeven als TF_VAR_github_token
integration_module_source nee Git-bron van de integratiemodules die de GitHub- en shared service-extensies gebruiken. Heeft een standaardwaarde; overschrijf die als je platform de modules elders synct

Secrets als variabelen

xmscspclient_secret, github_token en de GitHub App-credentials zijn secrets. Geef ze mee vanuit de secret store van de pipeline via TF_VAR_*-variabelen. Zet ze nooit in een spoke-bestand of een tfvars-bestand in de configuratierepository.

Modules

De spoke root is een compositie. Modules per gebied:

Gebied Modules Wat ze doen
Subscription subscription_managementgroup, subscription_rename, subscription_tags Plaatsen de subscription in de management group, hernoemen hem, passen tags toe
Identiteit en toegang privileges_adgroups, privileges_service_principal, privileges_roleassignments, pim_group_config, storespnsecret Maken de Entra ID-groepen en de service principal aan, wijzen rollen toe, configureren PIM voor de groepen, slaan het secret van de service principal op in de Key Vault
Resource groups resourcegroup, resourcegroup_networkwatcher De resource group per regio, en de eigen groep voor Network Watchers
Netwerk virtualnetwork, virtualnetworkvhublink, networkwatcher Netwerk, subnets, NSG's en route tables, de verbinding met de virtual hub, Network Watcher
Private DNS private_dns_zone, private_dns_zone_vnet_link_hub Een optionele private DNS-zone voor de spoke, gekoppeld aan het netwerk van de hub-DNS-resolver
Resources voor de workload keyvault, storageaccount, loganalyticsworkspace Key Vault, storage account (met customer-managed key), Log Analytics workspace
Azure DevOps AzureDevOps Optionele repository en service connection
Extensies apim_configuration, acr_configuration, servicebus_configuration, eventhub_configuration, github_repository_configuration, github_integration_configuration Optioneel gebruik van shared services, en de GitHub-repository met zijn federated credentials

Naast de modules maakt de root een Azure Monitor activity log alert aan voor policy-operaties. De bronnen beschrijven de trigger of action group ervan niet.

Outputs

Outputs zijn de overdracht tussen de layers en de informatie die een pipeline kan tonen of doorgeven. De bronnen noemen alleen de namen, zonder beschrijving:

Output Rapporteert over
workloadinfo De workload van de spoke
resourcegroup De resource groups
networking De netwerkresources
keyvault De Key Vault
storage_account Het storage account
loganalytics De Log Analytics workspace
groups De Entra ID-groepen van de spoke
ProductTeamGroups De teamgroepen die toegang hebben gekregen
privileges De roltoewijzingen
spn De service principal

Draai terraform output op een spoke-state om de exacte inhoud voor jouw versie te zien, en controleer die voordat je erop vertrouwt in een script. Behandel de output van spn als gevoelig totdat je weet dat die geen secret bevat.

Providers en versies

De spoke root pint exacte providerversies, zoals elke root module dat doet (Tools).

Provider Gebruikt voor
azurerm, azapi Azure-resources
azuread Groepen, service principals, PIM
azuredevops Repository en service connection
github Repository en federated credentials
external, time Ondersteunende lookups en timing

Ten tijde van de extractie vereiste de spoke root Terraform 1.9.2 of hoger. De exacte versies per release staan in de README van de root module in de versie die je pint.

Instellingen die voor alle spokes gelden

Instellingen die voor elke spoke gelden, worden één keer bijgehouden en niet in elk spoke-bestand herhaald. In het huidige platform staan ze in mcp.json onder SpokeCommon (mcp.json). In het oudere, aparte spoke canvas stonden ze in een common.tf-bestand. De groepen instellingen zijn hetzelfde:

Groep Bevat
Tenantinformatie (tenantinfo) Tenant, ID van de administrative unit, voorvoegsel voor groepsnamen, geldigheid van secrets van service principals in dagen. Een wijziging van de geldigheid maakt nieuwe secrets voor alle service principals van spokes
Netwerk De subscription van de centrale virtual hub, en optioneel de Azure Virtual Network Manager IPAM-pools waaruit spoke-bestanden adresruimte mogen toewijzen
Regio's Per regio: Azure-regionaam, vriendelijke naam, DNS-server (normaal de hub firewall in die regio), resource-ID van de virtual hub, resource-ID van de centrale Log Analytics workspace
PIM-configuraties De benoemde PIM-profielen nopim, self-approve en approval
Overrides voor de PIM-rolmap Optioneel, zie Data plane-toegang via PIM
GitHub-host (ghinfo) Base URL, organisatie en OIDC-issuer van de GitHub-host. Voor GitHub.com is de OIDC-issuer https://token.actions.githubusercontent.com
Shared services De subscription van de shared services, gebruikt door de extensies

Een IPAM-pool is regionaal, dus noem de pool samen met zijn regio als je meer dan één regio hebt. Spoke-bestanden die geen pool gebruiken, behouden hun vaste adresprefixes, wat ondersteund blijft. Een spoke-bestand gebruikt addressPrefix of een ipamPool met numberOfIpAddresses, niet beide. Gebruikt een virtual network een pool, dan erven de subnets die en geven ze alleen numberOfIpAddresses op; een subnet in een netwerk met een vast adresprefix kan geen poolallocatie vragen.

Controleer de veldnamen voor jouw versie

De namen in deze tabel zijn die van de oudere opzet. Kijk in de Spoke-JSON-referentie en in mcp.json van je configuratierepository voor de namen die jouw versie gebruikt.