Een implementatiestack bijwerken en verwijderen

Voltooid

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.

Een schermopname van de Azure CLI-opdrachtregelwaarschuwing dat de implementatiestack al bestaat.

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