Distributionsstackar (förhandsversion)

En Azure-distributionsstack är en typ av Azure-resurs som möjliggör hantering av en grupp Azure-resurser som en atomisk enhet. När en Bicep-fil eller en ARM JSON-mall skickas till en distributionsstack definierar den de resurser som hanteras av stacken. Om en resurs som tidigare ingick i mallen tas bort kopplas den från eller tas bort baserat på den angivna åtgärdenOnUnmanage-beteendet för distributionsstacken. På samma sätt som andra Azure-resurser kan åtkomsten till distributionsstacken begränsas med rollbaserad åtkomstkontroll i Azure (Azure RBAC).

Om du vill skapa och uppdatera en distributionsstack kan du använda Azure CLI, Azure PowerShell eller Azure-portalen tillsammans med Bicep-filer. Dessa Bicep-filer överförs till ARM JSON-mallar, som sedan distribueras som ett distributionsobjekt av stacken. Distributionsstacken erbjuder ytterligare funktioner utöver de välbekanta distributionsresurserna och fungerar som en supermängd av dessa funktioner.

Microsoft.Resources/deploymentStacks är resurstypen för distributionsstackar. Den består av en huvudmall som kan utföra 1-till-många-uppdateringar över omfång för de resurser som beskrivs och blockera oönskade ändringar av dessa resurser.

När du planerar distributionen och avgör vilka resursgrupper som ska ingå i samma stack är det viktigt att tänka på hanteringslivscykeln för dessa resurser, som omfattar skapande, uppdatering och borttagning. Anta till exempel att du behöver etablera några virtuella testdatorer för olika programteam i olika resursgruppsomfång. I det här fallet kan en distributionsstack användas för att skapa dessa testmiljöer och uppdatera testkonfigurationerna för virtuella datorer via efterföljande uppdateringar av distributionsstacken. När projektet har slutförts kan det vara nödvändigt att ta bort eller ta bort resurser som har skapats, till exempel de virtuella testdatorerna. Genom att använda en distributionsstack kan de hanterade resurserna enkelt tas bort genom att ange lämplig borttagningsflagga. Den här effektiva metoden sparar tid under miljörensningen, eftersom det innebär en enskild uppdatering av stackresursen i stället för att individuellt ändra eller ta bort varje virtuell testdator i olika resursgruppsomfång.

Distributionsstackar kräver Azure PowerShell version 10.1.0 eller senare eller Azure CLI version 2.50.0 eller senare.

Om du vill skapa din första distributionsstack går du igenom Snabbstart: skapa distributionsstack.

Varför ska du använda distributionsstackar?

Distributionsstackar ger följande fördelar:

  • Förenklad etablering och hantering av resurser i olika omfång som en sammanhängande entitet.
  • Förhindra oönskade ändringar av hanterade resurser genom att neka inställningar.
  • Effektiv miljörensning genom att använda ta bort flaggor under uppdateringar av distributionsstacken.
  • Använda standardmallar som Bicep, ARM-mallar eller mallspecifikationer för dina distributionsstackar.

Kända begränsningar

  • Implicit skapade resurser hanteras inte av stacken. Därför går det inte att neka tilldelningar eller rensning.
  • Neka tilldelningar stöder inte taggar.
  • Neka tilldelningar stöds inte inom hanteringsgruppens omfång.
  • Distributionsstackar kan inte ta bort Key Vault-hemligheter. Om du tar bort key vault-hemligheter från en mall ska du även köra kommandot update/delete för distributionsstacken med frånkopplat läge.

Kända problem

  • Om du tar bort resursgrupper kringgås för närvarande neka tilldelningar. När du skapar en distributionsstack i resursgruppens omfång innehåller Bicep-filen inte definitionen för resursgruppen. Trots inställningen neka tilldelning går det att ta bort resursgruppen och dess inneslutna stack. Men om ett lås är aktivt på någon resurs i gruppen misslyckas borttagningsåtgärden.
  • What-if är inte tillgängligt i förhandsversionen.
  • En stack med omfång för hanteringsgrupp är begränsad från att distribueras till en annan hanteringsgrupp. Den kan bara distribueras till själva stackens hanteringsgrupp eller till en underordnad prenumeration.

Skapa distributionsstackar

En distributionsstackresurs kan skapas i resursgruppen, prenumerationen eller hanteringsgruppens omfång. Mallen som skickas till en distributionsstack definierar vilka resurser som ska skapas eller uppdateras i det målomfång som anges för malldistributionen.

  • En stack i resursgruppsomfånget kan distribuera mallen som skickats in till samma resursgruppsomfång där distributionsstacken finns.
  • En stack i prenumerationsomfånget kan distribuera mallen som skickats in till ett resursgruppsomfång (om det anges) eller samma prenumerationsomfång där distributionsstacken finns.
  • En stack i hanteringsgruppens omfång kan distribuera mallen som skickats in till det angivna prenumerationsomfånget.

Det är viktigt att observera att där en distributionsstack finns, så är neka tilldelningen skapad med funktionen neka inställningar. Genom att till exempel skapa en distributionsstack i prenumerationsomfånget som distribuerar mallen till resursgruppens omfång och med läget DenyDeleteneka inställningar kan du enkelt etablera hanterade resurser till den angivna resursgruppen och blockera borttagningsförsök till dessa resurser. Med den här metoden förbättrar du även säkerheten för distributionsstacken genom att separera den på prenumerationsnivå, i stället för på resursgruppsnivå. Den här separationen säkerställer att utvecklarteamen som arbetar med de etablerade resurserna endast har synlighet och skrivåtkomst till resursgrupperna, medan distributionsstacken förblir isolerad på en högre nivå. Detta minimerar antalet användare som kan redigera en distributionsstack och göra ändringar i dess nekandetilldelning. Mer information finns i Skydda hanterade resurser mot borttagning.

Kommandot create-stack kan också användas för att uppdatera distributionsstackar.

Så här skapar du en distributionsstack i resursgruppens omfång:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none"

Så här skapar du en distributionsstack i prenumerationsomfånget:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentResourceGroupName "<resource-group-name>" `
  -DenySettingsMode "none"

Parametern DeploymentResourceGroupName anger den resursgrupp som används för att lagra de hanterade resurserna. Om parametern inte anges lagras de hanterade resurserna i prenumerationsomfånget.

Så här skapar du en distributionsstack i hanteringsgruppens omfång:

New-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -DenySettingsMode "none"

Parametern deploymentSubscriptionId anger den prenumeration som används för att lagra de hanterade resurserna. Om parametern inte anges lagras de hanterade resurserna i hanteringsgruppens omfång.

Lista distributionsstackar

Så här listar du distributionsstackresurser i resursgruppens omfång:

Get-AzResourceGroupDeploymentStack `
  -ResourceGroupName "<resource-group-name>"

Så här listar du distributionsstackresurser i prenumerationsomfånget:

Get-AzSubscriptionDeploymentStack

Så här listar du distributionsstackresurser i hanteringsgruppens omfång:

Get-AzManagementGroupDeploymentStack `
  -ManagementGroupId "<management-group-id>"

Uppdatera distributionsstackar

Om du vill uppdatera en distributionsstack, som kan innebära att lägga till eller ta bort en hanterad resurs, måste du göra ändringar i de underliggande Bicep-filerna. När ändringarna har gjorts har du två alternativ för att uppdatera distributionsstacken: kör uppdateringskommandot eller kör kommandot create igen.

Listan över hanterade resurser kan kontrolleras fullständigt via designmönstret infrastruktur som kod (IaC).

Använd kommandot Ange

Så här uppdaterar du en distributionsstack i resursgruppens omfång:

Set-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none"

Så här uppdaterar du en distributionsstack i prenumerationsomfånget:

Set-AzSubscriptionDeploymentStack `
   -Name "<deployment-stack-name>" `
   -Location "<location>" `
   -TemplateFile "<bicep-file-name>" `
   -DeploymentResourceGroupName "<resource-group-name>" `
  -DenySettingsMode "none"

Parametern DeploymentResourceGroupName anger den resursgrupp som används för att lagra distributionsstackens resurser. Om du inte anger ett resursgruppsnamn skapar distributionsstacken en ny resursgrupp åt dig.

Så här uppdaterar du en distributionsstack i hanteringsgruppens omfång:

Set-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -DenySettingsMode "none"

Använd kommandot Nytt

Du får en varning som liknar följande:

The deployment stack 'myStack' you're trying to create already exists in the current subscription/management group/resource group. Do you want to overwrite it? Detaching: resources, resourceGroups (Y/N)

Mer information finns i Skapa distributionsstackar.

Kontrollera frånkoppling och borttagning

En frånkopplad resurs (eller ohanterad resurs) refererar till en resurs som inte spåras eller hanteras av distributionsstacken men som fortfarande finns i Azure.

Om du vill instruera Azure att ta bort ohanterade resurser uppdaterar du stacken med kommandot create stack med någon av följande borttagningsflaggor. Mer information finns i Skapa distributionsstack.

  • DeleteAll: Använd ta bort i stället för att koppla från för hanterade resurser och resursgrupper.
  • DeleteResources: Använd endast ta bort i stället för att koppla från för hanterade resurser.
  • DeleteResourceGroups: Använd bara ta bort i stället för att koppla från för hanterade resursgrupper. Det är ogiltigt att använda DeleteResourceGroups på egen hand. DeleteResourceGroups måste användas tillsammans med DeleteResources.

Till exempel:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none" `
  -DeleteResourceGroups `
  -DeleteResources

Varning

När du tar bort resursgrupper med antingen DeleteAll egenskaperna eller DeleteResourceGroups tas även de hanterade resursgrupperna och alla resurser som ingår i dem bort.

Ta bort distributionsstackar

Om du kör borttagningskommandona utan borttagningsflaggor kopplas de ohanterade resurserna från men tas inte bort. Om du vill ta bort ohanterade resurser använder du följande växlar:

  • DeleteAll: Ta bort både resurserna och resursgrupperna.
  • DeleteResources: Ta bara bort resurserna.
  • DeleteResourceGroups: Ta bara bort resursgrupperna.

Även om du anger borttagningsväxeln tas inte både den ohanterade resursen och själva resursgruppen bort om det finns ohanterade resurser i resursgruppen där distributionsstacken finns.

Så här tar du bort distributionsstackens resurser i resursgruppens omfång:

Remove-AzResourceGroupDeploymentStack `
  -name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Så här tar du bort distributionsstackresurser i prenumerationsomfånget:

Remove-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Så här tar du bort distributionsstackresurser i hanteringsgruppens omfång:

Remove-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ManagementGroupId "<management-group-id>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Visa hanterade resurser i distributionsstacken

Under den offentliga förhandsversionen har distributionsstacktjänsten ännu inte något grafiskt användargränssnitt (GUI) i Azure-portalen. Om du vill visa de hanterade resurserna i en distributionsstack använder du följande Azure Powershell/Azure CLI-kommandon:

Så här visar du hanterade resurser i resursgruppens omfång:

(Get-AzResourceGroupDeploymentStack -Name "<deployment-stack-name>" -ResourceGroupName "<resource-group-name>").Resources

Så här visar du hanterade resurser i prenumerationsomfånget:

(Get-AzSubscriptionDeploymentStack -Name "<deployment-stack-name>").Resources

Så här visar du hanterade resurser i hanteringsgruppens omfång:

(Get-AzManagementGroupDeploymentStack -Name "<deployment-stack-name>" -ManagementGroupId "<management-group-id>").Resources

Lägga till resurser i distributionsstacken

Om du vill lägga till en hanterad resurs lägger du till resursdefinitionen i de underliggande Bicep-filerna och kör sedan uppdateringskommandot eller kör kommandot create igen. Mer information finns i Uppdatera distributionsstackar.

Ta bort hanterade resurser från distributionsstacken

Ta bort en hanterad resurs genom att ta bort resursdefinitionen från de underliggande Bicep-filerna och sedan köra uppdateringskommandot eller köra kommandot create igen. Mer information finns i Uppdatera distributionsstackar.

Skydda hanterade resurser mot borttagning

När du skapar en distributionsstack är det möjligt att tilldela en viss typ av behörigheter till de hanterade resurserna, vilket förhindrar att de tas bort av obehöriga säkerhetsobjekt. De här inställningarna kallas neka-inställningar. Du vill lagra stacken i ett överordnat omfång.

Azure PowerShell innehåller följande parametrar för att anpassa neka-tilldelningen:

  • DenySettingsMode: Definierar de åtgärder som är förbjudna för de hanterade resurserna för att skydda mot obehöriga säkerhetsobjekt som försöker ta bort eller uppdatera dem. Den här begränsningen gäller för alla om inte uttryckligen beviljad åtkomst. Värdena är: None, DenyDeleteoch DenyWriteAndDelete.
  • DenySettingsApplyToChildScopes: Neka-inställningar tillämpas på kapslade resurser under hanterade resurser.
  • DenySettingsExcludedAction: Lista över rollbaserade hanteringsåtgärder som undantas från neka-inställningarna. Upp till 200 åtgärder är tillåtna.
  • DenySettingsExcludedPrincipal: Lista över huvud-ID:t för Microsoft Entra som är undantagna från låset. Upp till fem huvudnamn är tillåtna.

Så här tillämpar du neka-inställningar i resursgruppens omfång:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Så här tillämpar du neka-inställningar i prenumerationsomfånget:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Använd parametern DeploymentResourceGroupName för att ange resursgruppens namn där distributionsstacken skapas. Om inget omfång har angetts används omfånget för distributionsstacken.

Så här tillämpar du neka-inställningar i hanteringsgruppens omfång:

New-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedActions "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Använd parametern DeploymentSubscriptionId för att ange prenumerations-ID:t där distributionsstacken skapas. Om inget omfång har angetts används omfånget för distributionsstacken.

Koppla från hanterade resurser från distributionsstacken

Som standard kopplas distributionsstackarna bort och tar inte bort ohanterade resurser när de inte längre finns i stackens hanteringsomfång. Mer information finns i Uppdatera distributionsstackar.

Exportera mallar från distributionsstackar

Du kan exportera resurserna från en distributionsstack till ett JSON-utdata. Du kan skicka utdata till en fil.

Så här exporterar du en distributionsstack i resursgruppens omfång:

Save-AzResourceGroupDeploymentStack `
   -Name '<deployment-stack-name>' `
   -ResourceGroupName '<resource-group-name>' `

Så här exporterar du en distributionsstack i prenumerationsomfånget:

Save-AzSubscriptionDeploymentStack `
  -name '<deployment-stack-name>'

Så här exporterar du en distributionsstack i hanteringsgruppens omfång:

Save-AzManagmentGroupDeploymentStack `
  -Name '<deployment-stack-name>' `
  -ManagementGroupId '<management-group-id>'

Nästa steg

Information om hur du går igenom en snabbstart finns i Snabbstart: skapa en distributionsstack.