Aktualisieren und Löschen eines Bereitstellungsstapels

Abgeschlossen

Mit Bereitstellungsstapeln können Sie Ihre Azure-Ressourcen mithilfe von Standardprozessen und Vorlagen verwalten. Wenn sich Ihre Anwendung ändert, ändern sich auch die Ressourcen, aus denen Ihre Anwendung besteht. Das Hinzufügen und Entfernen verwalteter Ressourcen ist ein wichtiger Bestandteil der Lebenszyklusverwaltung.

Sie haben Sprint 1 und die Erstbereitstellung der Depotanwendung mithilfe von Bereitstellungsstapeln abgeschlossen. Jetzt müssen Sie sich auf Sprint 2 vorbereiten, bei dem neue Dienste für die Anwendung eingeführt werden. Sie möchten mehr über das Aktualisieren und Löschen von Bereitstellungsstapeln und verwalteten Ressourcen erfahren.

In dieser Lerneinheit wird erläutert, wie Sie einen Bereitstellungsstapel aktualisieren, indem Sie Ihrer Bicep-Datei Ressourcen hinzufügen. Darüber hinaus erfahren Sie, wie Sie einen Bereitstellungsstapel und die zugehörigen verwalteten Ressourcen löschen.

Hinweis

Die Befehle in dieser Lerneinheit dienen der Veranschaulichung der Konzepte. Führen Sie die Befehle jetzt noch nicht aus. Sie können das Erlernte in Kürze üben.

Aktualisieren eines Bereitstellungsstapels

Wenn eine Anwendung weiterentwickelt wird, werden auch die Ressourcen weiterentwickelt. Wie können ein Bereitstellungsstapel und die zugehörigen verwalteten Ressourcen aktualisiert werden, wenn neue Dienste und Features hinzugefügt werden? In welchen Situationen müssen Sie einen Bereitstellungsstapel aktualisieren? Das Hinzufügen einer neuen Ressource oder das Ändern der Eigenschaft einer vorhandenen verwalteten Ressource erfordert, dass der Bereitstellungsstapel aktualisiert wird.

Das Aktualisieren eines Stapels bedeutet, dass die in der ARM-JSON-Vorlage, der Bicep-Datei oder der Vorlagenspezifikation definierten Ressourcen aktualisiert werden. Sobald die Änderung an der Vorlagendatei vorgenommen wurde, aktualisieren Sie den Bereitstellungsstapel mithilfe des entsprechenden Befehls.

Angenommen, die Depotanwendung muss eine neue Azure SQL-Datenbank hinzufügen, und der Bereitstellungsstapel soll die Datenbank verwalten. Zum Hinzufügen der neuen Datenbank aktualisieren Sie die Bicep-Datei, um einen neuen Azure SQL-Server und eine neue Datenbank zu definieren.

// Parameters
@description('The location for all resources.')
param location string = 'eastus'

@description('The name of the SQL database.')
param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'

@description('The password of the admin user.')
param sqlServerAdminUserName string

@description('The name of the admin user.')
@secure()
param sqlServerAdminPassword string

@description('The name of the SQL server.')
param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'

@description('The name of the web application.')
param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'

// Variables
@description('The name of the app service plan.')
var appServicePlanName = 'plan-deposits'

// Resource - App Service Plan
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: 'F1'
    capacity: 1
  }
}

// Resource - Web App
resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
  name: webApplicationName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
  }
}

// Resource - SQL Server
resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdminUserName
    administratorLoginPassword: sqlServerAdminPassword
  }
}

// Resource - SQL Database
resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
  parent: sqlServer
  name: sqlDatabaseName
  location: location
  sku: {
    name: 'Standard'
    tier: 'Standard'
  }
}

Der hervorgehobene Code definiert die neue Azure SQL-Datenbank für die Depotanwendung. Mit der neuen definierten Ressource müssen Sie den Bereitstellungsstapel aktualisieren.

Verwenden Sie den az stack group create-Befehl, um einen Bereitstellungsstapel mithilfe der Azure CLI zu aktualisieren.

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Hinweis

Die Azure CLI verfügt nicht über einen dedizierten Befehl zum Aktualisieren eines Bereitstellungsstapels. Verwenden Sie den create-Befehl, um den Stapel zu aktualisieren.

Beim Ausführen einer Aktualisierung für den Stapel erhalten Sie eine Meldung, die besagt, dass der Stapel bereits im aktuellen Abonnement vorhanden ist. Wenn sich der Wert des Parameters Aktion für Nichtverwalten ändert, werden Sie durch die Warnung über die neuen Werte benachrichtigt.

Screenshot: Warnung in der Azure CLI-Befehlszeile, dass der Bereitstellungsstapel bereits vorhanden ist

Verwenden Sie den az stack group show-Befehl, um zu überprüfen, ob der Stapel die neuen Ressourcen verwaltet.

az stack group show \
    --resource-group rg-depositsApplication
    --name stack-deposits
{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parameters": {
    "sqlServerAdminPassword": {
      "reference": null,
      "type": "securestring",
      "value": ""
    },
    "sqlServerAdminUserName": {
      "reference": null,
      "type": "string",
      "value": "sqladmin"
    }
  },
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Der hervorgehobene Code zeigt den neuen Azure SQL-Server und die neue Azure SQL-Datenbank, die vom Bereitstellungsstapel verwaltet werden.

Verwenden Sie den Befehl Set-AzResourceGroupDeploymentStack, um einen Bereitstellungsstapel mit Azure PowerShell zu aktualisieren.

Set-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Verwenden Sie den Get-AzResourceGroupDeploymentStack-Befehl, um zu überprüfen, ob der Stapel die neuen Ressourcen verwaltet.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication `
    -Name stack-deposits
Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq
                                /subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq
                                /subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq
Parameters                    : 
                                Name                      Type                       Value     
                                ========================  =========================  ==========
                                sqlServerAdminUserName    string                     "sqladmin"
                                sqlServerAdminPassword    securestring               ""

Der hervorgehobene Code zeigt den neuen Azure SQL-Server und die neue Azure SQL-Datenbank, die vom Bereitstellungsstapel verwaltet werden.

Im nächsten Modul arbeiten Sie an der Verwaltung des Ressourcenlebenszyklus (einschließlich Hinzufügen, Aktualisieren, Trennen und Löschen verwalteter Ressourcen).

Löschen eines Bereitstellungsstapels

Die zuverlässige Ressourcenbereinigung ist ein wichtiges Feature von Bereitstellungsstapeln. Wenn Sie einen Bereitstellungsstapel löschen, können Sie auch die verwalteten Ressourcen, Ressourcengruppen und Verwaltungsgruppen löschen. Die Verwendung eines einzelnen API-Aufrufs beseitigt die Notwendigkeit, Abhängigkeiten zu verstehen. Wie beim Erstellen und Aktualisieren von Bereitstellungsstapeln bestimmt der Parameter Aktion für Nichtverwaltung, wie Azure getrennte Ressourcen behandelt.

Hinweis

In diesem Modul arbeiten Sie mit Bereitstellungsstapeln im Ressourcengruppenbereich. In diesem Fall wird die Ressourcengruppe nicht vom Stapel verwaltet. Der Wert „Alle löschen“ für den Parameter Aktion für Nichtverwaltung löscht nicht die Ressourcengruppe, in der der Stapel vorhanden ist. Es ist erforderlich, die Ressourcengruppe nach dem Stapel und den zugehörigen Ressourcen zu löschen.

Verwenden Sie den Befehl az stack group delete, um einen Bereitstellungsstapel mithilfe der Azure CLI zu löschen. Das Argument --action-on-unmanaged bestimmt, wie Azure getrennte Ressourcen, Ressourcengruppen und Verwaltungsgruppen behandelt.

az stack group delete \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --action-on-unmanage deleteAll

Verwenden Sie den Befehl Remove-AzResourceGroupDeploymentStack, um einen Bereitstellungsstapel mit Azure PowerShell zu löschen. Das Argument -ActionOnUnmanage bestimmt, wie Azure getrennte Ressourcen, Ressourcengruppen und Verwaltungsgruppen behandelt.

Remove-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -ActionOnUnmanage -DeleteAll