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.
Gerelateerde pagina's¶
- Spoke canvas: wat een deployment aanmaakt
- Provisioning en Pipelines en workflows
- Upgradehandleidingen voor spoke canvas voor wijzigingen in deze instellingen tussen versies