Atualizar e excluir uma pilha de implantação
As pilhas de implantação permitem que você gerencie seus recursos do Azure usando modelos e processos padrão. À medida que o aplicativo muda, os recursos que compõem o aplicativo também são alterados. Adicionar e remover recursos gerenciados é uma parte crítica do gerenciamento do ciclo de vida.
Você concluiu o sprint 1 e a implantação inicial do aplicativo de depósitos usando pilhas de implantação. Agora, você precisa se preparar para o sprint 2 apresenta novos serviços ao aplicativo. Você deseja saber mais sobre como atualizar e excluir pilhas de implantação e recursos gerenciados.
Nesta unidade, você aprenderá a atualizar uma pilha de implantação adicionando recursos ao arquivo Bicep. Além disso, você aprenderá a excluir uma pilha de implantação e seus recursos gerenciados.
Observação
Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você praticará o que aprendeu aqui em breve.
Atualização de uma pilha de implantação
À medida que um aplicativo evolui, seus recursos também evoluem. Como atualizar uma pilha de implantação e seus recursos gerenciados quando novos serviços e recursos são adicionados? Quais situações exigem que atualizemos uma pilha de implantação? Adicionar um novo recurso ou alterar a propriedade de um recurso gerenciado existente exigiria que atualizemos a pilha de implantação.
Atualizar uma pilha significa atualizar os recursos definidos em nosso modelo JSON ARM, arquivo Bicep ou especificação de modelo. Depois que a alteração for feita no arquivo de modelo, atualizaremos a pilha de implantação usando o comando apropriado.
Digamos que nosso aplicativo de depósitos precise adicionar um novo banco de dados SQL do Azure e queremos que a pilha de implantação gerencie o banco de dados. Para adicionar o novo banco de dados, atualizamos nosso arquivo Bicep para definir um novo servidor SQL do Azure e um banco de dados.
// 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'
}
}
O código realçado define nosso novo banco de dados SQL do Azure para nosso aplicativo de depósitos. Com nosso novo recurso definido, precisamos atualizar a pilha de implantação.
Para atualizar uma pilha de implantação usando a CLI do Azure, use o comando.az stack group create
.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Observação
A CLI do Azure não tem um comando dedicado para atualizar uma pilha de implantação. Use o comando create para atualizar a pilha.
Ao executar uma atualização na pilha, você recebe uma mensagem informando que a pilha já existe na assinatura atual. Se o valor do parâmetro de ação não gerenciada for alterado, o aviso alertará você sobre os novos valores.
Para verificar se a pilha está gerenciando os novos recursos, use o comandoaz stack group show
.
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"
}
O código realçado mostra o novo SQL Server do Azure e o Banco de Dados SQL do Azure como gerenciados pela pilha de implantação.
Para atualizar uma pilha de implantação usando o Azure PowerShell, use o comando.Set-AzResourceGroupDeploymentStack
.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Para verificar se a pilha está gerenciando os novos recursos, use o comando Get-AzResourceGroupDeploymentStack
.
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 ""
O código realçado mostra o novo SQL Server do Azure e o Banco de Dados SQL do Azure como gerenciados pela pilha de implantação.
No próximo módulo, você trabalha no gerenciamento de ciclos de vida de recursos, incluindo adição, atualização, desanexação e exclusão de recursos gerenciados.
Exclusão de uma pilha de implantação
A limpeza de recursos confiáveis é um recurso fundamental das pilhas de implantação. Ao excluir uma pilha de implantação, você também pode excluir os recursos gerenciados, os grupos de recursos e os grupos de gerenciamento. O uso de uma única chamada à API elimina a necessidade de entender as dependências. Assim como acontece com a criação e atualização de pilhas de implantação, a ação no parâmetro unmanage determina como o Azure lida com recursos desanexados.
Observação
Neste módulo, estamos trabalhando com pilhas de implantação com escopo de grupo de redirecionamento. Nessa situação, o grupo de recursos não é gerenciado pela pilha. O valor 'delete all' da ação no parâmetro unmanage não detele o grupo de recursos no qual a pilha existe. É necessário excluir o grupo de recursos depois que a pilha e seus recursos são excluídos.
Para excluir uma pilha de implantação usando a CLI do Azure, use o comando.az stack group delete
. O argumento --action-on-unmanaged
determina como o Azure lida com recursos desanexados, grupos de recursos e grupos de gerenciamento.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Para excluir uma pilha de implantação usando o Azure PowerShell, use o comando.Remove-AzResourceGroupDeploymentStack
. O argumento -ActionOnUnmanage
determina como o Azure lida com recursos desanexados, grupos de recursos e grupos de gerenciamento.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll