Een implementatiestack bijwerken en verwijderen
Met implementatiestacks kunt u uw Azure-resources beheren met behulp van standaardprocessen en sjablonen. Wanneer uw toepassing verandert, worden ook de resources waaruit de toepassing bestaat, gewijzigd. Het toevoegen en verwijderen van beheerde resources is een essentieel onderdeel van levenscyclusbeheer.
U hebt sprint 1 en de eerste implementatie van de stortingstoepassing voltooid met behulp van implementatiestacks. Nu moet u zich voorbereiden op sprint 2 en nieuwe services voor de toepassing introduceert. U wilt meer informatie over het bijwerken en verwijderen van implementatiestacks en beheerde resources.
In deze les leert u hoe u een implementatiestack bijwerkt door resources toe te voegen aan uw Bicep-bestand. Daarnaast leert u hoe u een implementatiestack en de bijbehorende beheerde resources verwijdert.
Notitie
De opdrachten in deze les worden weergegeven om concepten te illustreren. Voer de opdrachten nog niet uit. U oefent wat u hier binnenkort leert.
Een implementatiestack bijwerken
Naarmate een toepassing zich ontwikkelt, worden de resources ook uitgebreid. Hoe werken we een implementatiestack en de bijbehorende beheerde resources bij wanneer er nieuwe services en functies worden toegevoegd? In welke situaties moeten we een implementatiestack bijwerken? Als u een nieuwe resource toevoegt of de eigenschap van een bestaande beheerde resource wijzigt, moet de implementatiestack worden bijgewerkt.
Het bijwerken van een stack betekent het bijwerken van de resources die zijn gedefinieerd in de ARM JSON-sjabloon, het Bicep-bestand of de sjabloonspecificatie. Zodra de wijziging is aangebracht in het sjabloonbestand, werken we de implementatiestack bij met behulp van de juiste opdracht.
Stel dat onze stortingentoepassing een nieuwe Azure SQL-database moet toevoegen en dat de implementatiestack de database moet beheren. Als u de nieuwe database wilt toevoegen, werken we ons Bicep-bestand bij om een nieuwe Azure SQL-server en -database te definiëren.
// 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'
}
}
De gemarkeerde code definieert onze nieuwe Azure SQL-database voor onze deposits-toepassing. Nu onze nieuwe resource is gedefinieerd, moeten we de implementatiestack bijwerken.
Gebruik de az stack group create
opdracht om een implementatiestack bij te werken met behulp van Azure CLI.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Notitie
Azure CLI heeft geen toegewezen opdracht om een implementatiestack bij te werken. Gebruik de opdracht maken om de stack bij te werken.
Wanneer u een update uitvoert op de stack, ontvangt u een bericht waarin staat dat de stack al bestaat in het huidige abonnement. Als de waarde van de actie voor onbeheerde parameter verandert, wordt u gewaarschuwd voor de nieuwe waarden.
Gebruik de az stack group show
opdracht om te controleren of de stack de nieuwe resources beheert.
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"
}
De gemarkeerde code toont de nieuwe Azure SQL-server en Azure SQL-database, zoals beheerd door de implementatiestack.
Als u een implementatiestack wilt bijwerken met behulp van Azure PowerShell, gebruikt u de Set-AzResourceGroupDeploymentStack
opdracht.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Gebruik de Get-AzResourceGroupDeploymentStack
opdracht om te controleren of de stack de nieuwe resources beheert.
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 ""
De gemarkeerde code toont de nieuwe Azure SQL-server en Azure SQL-database, zoals beheerd door de implementatiestack.
In de volgende module werkt u aan het beheren van resourcelevenscycli, waaronder het toevoegen, bijwerken, loskoppelen en verwijderen van beheerde resources.
Een implementatiestack verwijderen
Betrouwbaar opschonen van resources is een belangrijke functie van implementatiestacks. Wanneer u een implementatiestack verwijdert, kunt u ook de beheerde resources, resourcegroepen en beheergroepen verwijderen. Als u één API-aanroep gebruikt, hoeft u geen afhankelijkheden meer te begrijpen. Net als bij het maken en bijwerken van implementatiestacks bepaalt de actie voor onbeheerde parameter hoe Azure losgekoppelde resources verwerkt.
Notitie
In deze module werken we met implementatiestacks binnen het bereik van de resrouce-groep. In dit geval wordt de resourcegroep niet beheerd door de stack. De waarde 'alles verwijderen' voor de actie op een onbeheerde parameter onttelt niet de resourcegroep waar de stack bestaat. Het is nodig om de resourcegroep te verwijderen nadat de stack en de bijbehorende resources zijn verwijderd.
Als u een implementatiestack wilt verwijderen met behulp van Azure CLI, gebruikt u de az stack group delete
opdracht. Het --action-on-unmanaged
argument bepaalt hoe Azure losgekoppelde resources, resourcegroepen en beheergroepen verwerkt.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Als u een implementatiestack wilt verwijderen met behulp van Azure PowerShell, gebruikt u de Remove-AzResourceGroupDeploymentStack
opdracht. Het -ActionOnUnmanage
argument bepaalt hoe Azure losgekoppelde resources, resourcegroepen en beheergroepen verwerkt.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll