Dela via


Självstudie: Använda distributionsstack med Bicep

I den här självstudien lär du dig hur du skapar och hanterar en distributionsstack. Självstudien fokuserar på att skapa distributionsstacken i resursgruppens omfång. Du kan dock också skapa distributionsstackar i prenumerationsomfånget. Mer information om hur du skapar distributionsstackar finns i Skapa distributionsstackar.

Förutsättningar

Skapa en Bicep-fil

Skapa en Bicep-fil i Visual Studio Code för att skapa ett lagringskonto och ett virtuellt nätverk. Den här filen används för att skapa din distributionsstack.

param resourceGroupLocation string = resourceGroup().location
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param vnetName string = 'vnet${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  location: resourceGroupLocation
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-11-01' = {
  name: vnetName
  location: resourceGroupLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Spara Bicep-filen som main.bicep.

Skapa en distributionsstack

Om du vill skapa en resursgrupp och en distributionsstack kör du följande kommandon och ser till att du anger rätt Bicep-filsökväg baserat på din körningsplats.

az group create \
  --name 'demoRg' \
  --location 'centralus'

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Använd växeln action-on-unmanage för att definiera vad som händer med resurser som inte längre hanteras när en stack har uppdaterats eller tagits bort. Mer information finns i Kontrollera avkoppling och borttagning. Växeln deny-settings-mode tilldelar en viss typ av behörigheter till de hanterade resurserna, vilket förhindrar att de tas bort av obehöriga säkerhetsobjekt. Mer information finns i Skydda hanterade resurser mot borttagning.

Visa en lista över distributionsstacken och de hanterade resurserna

För att verifiera distributionen kan du lista distributionsstacken och visa en lista över de hanterade resurserna i distributionsstacken.

Så här listar du den distribuerade distributionsstacken:

az stack group show \
  --resource-group 'demoRg' \
  --name 'demoStack'

Utdata visar två hanterade resurser – ett lagringskonto och ett virtuellt nätverk:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deployments/demoStack-24051714epybc",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT32.5330364S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-05-17T14:50:18.382948+00:00",
    "createdBy": "johndoe@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-05-17T14:50:18.382948+00:00",
    "lastModifiedBy": "johndoe@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Du kan också verifiera distributionen genom att visa en lista över hanterade resurser i distributionsstacken:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Utdatan liknar följande:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deployments/demoStack-24051714epybc",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT32.5330364S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-05-17T14:50:18.382948+00:00",
    "createdBy": "johndoe@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-05-17T14:50:18.382948+00:00",
    "lastModifiedBy": "johndoe@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Uppdatera distributionsstacken

Uppdatera en distributionsstack genom att göra nödvändiga ändringar i den underliggande Bicep-filen och sedan köra kommandot igen för att skapa distributionsstacken eller använda kommandot set i Azure PowerShell.

I den här självstudien utför du följande aktiviteter:

  • Uppdatera en egenskap för en hanterad resurs.
  • Lägg till en resurs i stacken.
  • Koppla från en hanterad resurs.
  • Koppla en befintlig resurs till stacken.
  • Ta bort en hanterad resurs.

Uppdatera en hanterad resurs

I slutet av föregående steg har du en stack med två hanterade resurser. Du uppdaterar en egenskap för lagringskontoresursen.

Redigera filen main.bicep för att ändra sku-namnet från Standard_LRS till Standard_GRS:

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_GRS'
  }
}

Uppdatera den hanterade resursen genom att köra följande kommando:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Du kan verifiera SKU-egenskapen genom att köra följande kommando:

az resource list --resource-group 'demoRg'

Lägga till en hanterad resurs

I slutet av föregående steg har du en stack med två hanterade resurser. Du lägger till ytterligare en lagringskontoresurs i stacken.

Redigera filen main.bicep så att den innehåller en annan definition av lagringskontot:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Uppdatera distributionsstacken genom att köra följande kommando:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Du kan verifiera distributionen genom att ange de hanterade resurserna i distributionsstacken:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Du kommer att se det nya lagringskontot utöver de två befintliga resurserna.

Koppla från en hanterad resurs

I slutet av föregående steg har du en stack med tre hanterade resurser. Du kopplar från en av de hanterade resurserna. När resursen har kopplats från finns den kvar i resursgruppen.

Redigera filen main.bicep för att ta bort följande definition av lagringskontot från föregående steg:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Uppdatera distributionsstacken genom att köra följande kommando:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Du kan verifiera distributionen genom att ange de hanterade resurserna i distributionsstacken:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Du ska se två hanterade resurser i stacken. Den frånkopplade resursen visas dock fortfarande i resursgruppen. Du kan visa en lista över resurserna i resursgruppen genom att köra följande kommando:

az resource list --resource-group 'demoRg'

Koppla en befintlig resurs till stacken

I slutet av föregående steg har du en stack med två hanterade resurser. Det finns en ohanterad resurs i samma resursgrupp som de hanterade resurserna. Du kopplar den här ohanterade resursen till stacken.

Redigera filen main.bicep så att den innehåller definitionen av lagringskontot för den ohanterade resursen:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Uppdatera distributionsstacken genom att köra följande kommando:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Du kan verifiera distributionen genom att ange de hanterade resurserna i distributionsstacken:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Du kommer att se tre hanterade resurser.

Ta bort en hanterad resurs

I slutet av föregående steg har du en stack med tre hanterade resurser. I något av föregående steg kopplas en hanterad resurs från. Ibland kanske du vill ta bort resurser i stället för att koppla från en. Om du vill ta bort en resurs använder du en åtgärd-på-ohanterad växel med kommandot create/set.

Redigera filen main.bicep för att ta bort följande definition av lagringskontot:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Kör följande kommando med växeln --action-on-unmanage 'deleteResources' :

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'deleteResources' \
  --deny-settings-mode 'none' 

Förutom deleteResourcesfinns det två andra värden: deleteAll och detachAll. Mer information finns i Kontrollera avkoppling och borttagning.

Du kan verifiera distributionen genom att ange de hanterade resurserna i distributionsstacken:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Du ska se två hanterade resurser i stacken. Resursen tas också bort från resursgruppen. Du kan verifiera resursgruppen genom att köra följande kommando:

az resource list --resource-group 'demoRg'

Konfigurera inställningar för neka

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 döms som neka-inställningar.

Azure CLI innehåller dessa parametrar för att anpassa neka-tilldelningen:

  • deny-settings-mode: 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.
  • deny-settings-apply-to-child-scopes: Neka-inställningar tillämpas på underordnade Azure-hanteringsomfång.
  • deny-settings-excluded-actions: Lista över rollbaserade hanteringsåtgärder för åtkomstkontroll (RBAC) som undantas från neka-inställningarna. Upp till 200 åtgärder tillåts.
  • deny-settings-excluded-principals: Lista över huvud-ID:t för Microsoft Entra som är undantagna från låset. Upp till fem huvudnamn tillåts.

I den här självstudien konfigurerar du läget neka inställningar. Mer information om andra neka-inställningar finns i Skydda hanterade resurser mot borttagning.

I slutet av föregående steg har du en stack med två hanterade resurser.

Kör följande kommando med inställningen neka inställningar inställd på neka-ta bort:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'denyDelete'

Följande borttagningskommando misslyckas eftersom läget neka inställningar är inställt på neka-ta bort:

az resource delete \
  --resource-group 'demoRg' \
  --name '<storage-account-name>' \
  --resource-type 'Microsoft.Storage/storageAccounts'

Uppdatera stacken med läget neka inställningar till ingen, så att du kan slutföra resten av självstudien:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --action-on-unmanage 'detachAll' \
  --deny-settings-mode 'none'

Exportera mallen från stacken

Genom att exportera en distributionsstack kan du generera en Bicep-fil. Den här Bicep-filen fungerar som en resurs för framtida utveckling och efterföljande distributioner.

az stack group export \
  --name 'demoStack' \
  --resource-group 'demoRg'

Du kan skicka utdata till en fil.

Ta bort distributionsstacken

Kör följande kommando för att ta bort distributionsstacken och de hanterade resurserna:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --action-on-unmanage 'deleteAll' 

Ta bort distributionsstacken, men koppla från de hanterade resurserna:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --action-on-unmanage 'detachAll' 

Mer information finns i Ta bort distributionsstackar.

Nästa steg