Aktualizace a odstranění zásobníku nasazení
Zásobníky nasazení umožňují spravovat prostředky Azure pomocí standardních procesů a šablon. Při změnách aplikace se tak mění prostředky, které aplikaci tvoří. Přidávání a odebírání spravovaných prostředků je důležitou součástí správy životního cyklu.
Dokončili jste sprint 1 a počáteční nasazení aplikace pro uložení pomocí zásobníků nasazení. Teď se musíte připravit na sprint 2 a zavést do aplikace nové služby. Chcete se dozvědět více o tom, jak aktualizovat a odstranit zásobníky nasazení a spravované prostředky.
V této lekci se dozvíte, jak aktualizovat zásobník nasazení přidáním prostředků do souboru Bicep. Dále se dozvíte, jak odstranit zásobník nasazení a jeho spravované prostředky.
Poznámka:
Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.
Aktualizace zásobníku nasazení
Jak se aplikace vyvíjí, tak i její prostředky. Jak aktualizujeme zásobník nasazení a jeho spravované prostředky při přidání nových služeb a funkcí? Jaké situace vyžadují aktualizaci zásobníku nasazení? Přidání nového prostředku nebo změna vlastnosti existujícího spravovaného prostředku by vyžadovalo aktualizaci zásobníku nasazení.
Aktualizace zásobníku znamená aktualizaci prostředků definovaných v šabloně JSON ARM, souboru Bicep nebo specifikaci šablony. Po provedení změny v souboru šablony aktualizujeme zásobník nasazení pomocí příslušného příkazu.
Řekněme, že naše aplikace pro vklady potřebuje přidat novou databázi Azure SQL a chceme, aby sada nasazení spravuje databázi. Abychom přidali novou databázi, aktualizujeme soubor Bicep tak, aby definoval nový server a databázi 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'
}
}
Zvýrazněný kód definuje novou databázi Azure SQL pro naši aplikaci pro vklady. S definovaným novým prostředkem musíme aktualizovat zásobník nasazení.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure CLI, použijte az stack group create
tento příkaz.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Poznámka:
Azure CLI nemá vyhrazený příkaz pro aktualizaci zásobníku nasazení. K aktualizaci zásobníku použijte příkaz create.
Při provádění aktualizace zásobníku se zobrazí zpráva oznamující, že zásobník již existuje v aktuálním předplatném. Pokud se hodnota akce u nespravovaných parametrů změní, upozornění vás upozorní na nové hodnoty.
Pokud chcete ověřit, že zásobník spravuje nové prostředky, použijte az stack group show
příkaz.
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"
}
Zvýrazněný kód zobrazuje nový server Azure SQL a databázi Azure SQL, které spravuje zásobník nasazení.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure PowerShellu Set-AzResourceGroupDeploymentStack
, použijte tento příkaz.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Pokud chcete ověřit, že zásobník spravuje nové prostředky, použijte Get-AzResourceGroupDeploymentStack
příkaz.
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 ""
Zvýrazněný kód zobrazuje nový server Azure SQL a databázi Azure SQL, které spravuje zásobník nasazení.
V dalším modulu budete pracovat na správě životního cyklu prostředků, včetně přidávání, aktualizace, odpojení a odstraňování spravovaných prostředků.
Odstranění zásobníku nasazení
Spolehlivé vyčištění prostředků je klíčovou funkcí zásobníků nasazení. Když odstraníte zásobník nasazení, můžete také odstranit spravované prostředky, skupiny prostředků a skupiny pro správu. Použití jednoho volání rozhraní API eliminuje potřebu porozumět závislostem. Stejně jako při vytváření a aktualizaci zásobníků nasazení určuje akce u nespravovaného parametru způsob, jakým Azure zpracovává odpojené prostředky.
Poznámka:
V tomto modulu pracujeme se zásobníky nasazení s rozsahem skupiny resrouce. V takové situaci není skupina prostředků spravovaná zásobníkem. Hodnota Delete all pro akci u parametru nespravování detele nerozliší skupinu prostředků, ve které existuje zásobník. Po odstranění zásobníku a jejích prostředků je nutné odstranit skupinu prostředků.
Pokud chcete odstranit zásobník nasazení pomocí Azure CLI, použijte tento az stack group delete
příkaz. Argument --action-on-unmanaged
určuje, jak Azure zpracovává odpojené prostředky, skupiny prostředků a skupiny pro správu.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Pokud chcete odstranit zásobník nasazení pomocí Azure PowerShellu Remove-AzResourceGroupDeploymentStack
, použijte tento příkaz. Argument -ActionOnUnmanage
určuje, jak Azure zpracovává odpojené prostředky, skupiny prostředků a skupiny pro správu.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll