Actualización y eliminación de una pila de implementación
Las pilas de implementación permiten administrar los recursos de Azure mediante plantillas y procesos estándar. A medida que cambia la aplicación, lo hacen los recursos que componen la aplicación. Agregar y quitar recursos administrados es una parte fundamental de la administración del ciclo de vida.
Ha completado el sprint 1 y la implementación inicial de la aplicación de depósitos mediante pilas de implementación. Ahora, debe prepararse para el sprint 2, que presenta nuevos servicios a la aplicación. Quiere obtener más información sobre cómo actualizar y eliminar pilas de implementación y recursos administrados.
En esta unidad, aprenderá a actualizar una pila de implementación agregando recursos al archivo de Bicep. Además, aprenderá a eliminar una pila de implementación y sus recursos administrados.
Nota:
Los comandos de esta unidad se muestran para ilustrar conceptos. No los ejecute todavía. Pronto va a practicar lo que aprenderá aquí.
Actualización de una pila de implementación
A medida que evoluciona una aplicación, también lo hacen sus recursos. ¿Cómo actualizamos una pila de implementación y sus recursos administrados cuando se agregan nuevos servicios y características? ¿Qué situaciones requieren que actualicemos una pila de implementación? Agregar un nuevo recurso o cambiar la propiedad de un recurso administrado existente requeriría que actualicemos la pila de implementación.
La actualización de una pila significa actualizar los recursos definidos en nuestra plantilla JSON de ARM, archivo Bicep o especificación de plantilla. Una vez realizado el cambio en el archivo de plantilla, se actualiza la pila de implementación mediante el comando adecuado.
Supongamos que nuestra aplicación de depósitos debe agregar una nueva base de datos de Azure SQL y queremos que la pila de implementación administre la base de datos. Para agregar la nueva base de datos, actualizamos nuestro archivo de Bicep para definir un nuevo servidor y una base de datos de 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'
}
}
El código resaltado define nuestra nueva base de datos de Azure SQL para nuestra aplicación de depósitos. Con el nuevo recurso definido, es necesario actualizar la pila de implementación.
Para actualizar una pila de implementación mediante la CLI de Azure, use el 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
Nota:
La CLI de Azure no tiene un comando dedicado para actualizar una pila de implementación. Use el comando create para actualizar la pila.
Al realizar una actualización en la pila, recibirá un mensaje que indica que la pila ya existe en la suscripción actual. Si el valor de la acción en el parámetro no administrado cambia, la advertencia le avisa de los nuevos valores.
Para comprobar que la pila administra los nuevos recursos, use el comando az 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"
}
El código resaltado muestra el nuevo Azure SQL Server y la base de datos de Azure SQL como administrados por la pila de implementación.
Para actualizar una pila de implementación mediante Azure PowerShell, use el comando Set-AzResourceGroupDeploymentStack
.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Para comprobar que la pila administra los nuevos recursos, use el 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 ""
El código resaltado muestra el nuevo Azure SQL Server y la base de datos de Azure SQL como administrados por la pila de implementación.
En el módulo siguiente, trabajará para administrar los ciclos de vida de los recursos, incluida la adición, actualización, desasociación y eliminación de recursos administrados.
Eliminación de una pila de implementación
La limpieza confiable de recursos es una característica clave de las pilas de implementación. Al eliminar una pila de implementación, también puede eliminar los recursos administrados, los grupos de recursos y los grupos de administración. El uso de una sola llamada API elimina la necesidad de comprender las dependencias. Al igual que con la creación y actualización de pilas de implementación, la acción en el parámetro no administrado determina cómo Azure controla los recursos desasociados.
Nota:
En este módulo, estamos trabajando con pilas de implementación con ámbito de grupo de recursos. En esta situación, la pila no administra el grupo de recursos. El valor "eliminar todo" de la acción en el parámetro no administrado no elimina el grupo de recursos donde existe la pila. Es necesario eliminar el grupo de recursos después de eliminar la pila y sus recursos.
Para eliminar una pila de implementación mediante la CLI de Azure, use el comando az stack group delete
. El argumento --action-on-unmanaged
determina cómo Azure controla los recursos desasociados, los grupos de recursos y los grupos de administración.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Para eliminar una pila de implementación mediante Azure PowerShell, use el comando Remove-AzResourceGroupDeploymentStack
. El argumento -ActionOnUnmanage
determina cómo Azure controla los recursos desasociados, los grupos de recursos y los grupos de administración.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll