Aktualizowanie i usuwanie stosu wdrożenia
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.
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