Aktualizowanie i usuwanie stosu wdrożenia

Ukończone

Stosy wdrażania umożliwiają zarządzanie zasobami platformy Azure przy użyciu standardowych procesów i szablonów. W miarę zmiany aplikacji zasoby tworzące aplikację. Dodawanie i usuwanie zasobów zarządzanych jest krytyczną częścią zarządzania cyklem życia.

Ukończono przebieg 1 i początkowe wdrożenie aplikacji depozytów przy użyciu stosów wdrażania. Teraz musisz przygotować się do przebiegu 2 wprowadza nowe usługi do aplikacji. Chcesz dowiedzieć się więcej na temat aktualizowania i usuwania stosów wdrożeń i zasobów zarządzanych.

W tej lekcji dowiesz się, jak zaktualizować stos wdrożenia, dodając zasoby do pliku Bicep. Ponadto dowiesz się, jak usunąć stos wdrożenia i jego zasoby zarządzane.

Uwaga

Polecenia w tej lekcji są wyświetlane w celu zilustrowania pojęć. Nie uruchamiaj jeszcze poleceń. Będziesz ćwiczyć to, czego nauczysz się tutaj wkrótce.

Aktualizowanie stosu wdrożenia

W miarę rozwoju aplikacji jej zasoby. Jak zaktualizować stos wdrożenia i jego zarządzane zasoby po dodaniu nowych usług i funkcji? Jakie sytuacje wymagają zaktualizowania stosu wdrożenia? Dodanie nowego zasobu lub zmiana właściwości istniejącego zasobu zarządzanego wymaga zaktualizowania stosu wdrożenia.

Aktualizowanie stosu oznacza aktualizowanie zasobów zdefiniowanych w szablonie JSON usługi ARM, pliku Bicep lub specyfikacji szablonu. Po wprowadzeniu zmiany w pliku szablonu zaktualizujemy stos wdrożenia przy użyciu odpowiedniego polecenia.

Załóżmy, że nasza aplikacja do depozytów musi dodać nową bazę danych Azure SQL Database i chcemy, aby stos wdrożenia zarządzał bazą danych. Aby dodać nową bazę danych, zaktualizujemy nasz plik Bicep, aby zdefiniować nowy serwer i bazę danych Azure SQL.

// 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'
  }
}

Wyróżniony kod definiuje naszą nową bazę danych Azure SQL Database dla naszej aplikacji do depozytów. Po zdefiniowaniu nowego zasobu musimy zaktualizować stos wdrożenia.

Aby zaktualizować stos wdrożenia przy użyciu interfejsu wiersza polecenia platformy az stack group create Azure, użyj polecenia .

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

Uwaga

Interfejs wiersza polecenia platformy Azure nie ma dedykowanego polecenia w celu zaktualizowania stosu wdrożenia. Użyj polecenia create, aby zaktualizować stos.

Podczas przeprowadzania aktualizacji na stosie zostanie wyświetlony komunikat informujący, że stos już istnieje w bieżącej subskrypcji. Jeśli wartość akcji dla parametru niezarządzanego zmieni się, ostrzeżenie ostrzega o nowych wartościach.

Zrzut ekranu przedstawiający ostrzeżenie wiersza polecenia interfejsu wiersza polecenia platformy Azure, że stos wdrożenia już istnieje.

Aby sprawdzić, czy stos zarządza nowymi zasobami, użyj az stack group show polecenia .

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"
}

Wyróżniony kod przedstawia nowy serwer Azure SQL i bazę danych Azure SQL Database jako zarządzaną przez stos wdrożenia.

Aby zaktualizować stos wdrożenia przy użyciu programu Azure PowerShell, użyj Set-AzResourceGroupDeploymentStack polecenia .

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

Aby sprawdzić, czy stos zarządza nowymi zasobami, użyj Get-AzResourceGroupDeploymentStack polecenia .

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               ""

Wyróżniony kod przedstawia nowy serwer Azure SQL i bazę danych Azure SQL Database jako zarządzaną przez stos wdrożenia.

W następnym module będziesz pracować nad zarządzaniem cyklami życia zasobów, w tym dodawaniem, aktualizowaniem, odłączanie i usuwaniem zasobów zarządzanych.

Usuwanie stosu wdrożenia

Niezawodne oczyszczanie zasobów to kluczowa funkcja stosów wdrożeń. Po usunięciu stosu wdrożenia można również usunąć zarządzane zasoby, grupy zasobów i grupy zarządzania. Użycie pojedynczego wywołania interfejsu API eliminuje konieczność zrozumienia zależności. Podobnie jak w przypadku tworzenia i aktualizowania stosów wdrażania, akcja w przypadku parametru niezarządzanego określa sposób obsługi zasobów odłączonych przez platformę Azure.

Uwaga

W tym module pracujemy z stosami wdrożeń w zakresie grupy resrouce. W takiej sytuacji grupa zasobów nie jest zarządzana przez stos. Wartość "Usuń wszystkie" akcji dla parametru niezarządzania nie powoduje detele grupy zasobów, w której istnieje stos. Po usunięciu stosu i jego zasobów należy usunąć grupę zasobów.

Aby usunąć stos wdrożenia przy użyciu interfejsu wiersza polecenia platformy az stack group delete Azure, użyj polecenia . Argument --action-on-unmanaged określa, jak platforma Azure obsługuje odłączone zasoby, grupy zasobów i grupy zarządzania.

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

Aby usunąć stos wdrożenia przy użyciu programu Azure PowerShell, użyj Remove-AzResourceGroupDeploymentStack polecenia . Argument -ActionOnUnmanage określa, jak platforma Azure obsługuje odłączone zasoby, grupy zasobów i grupy zarządzania.

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