Aktualizace a odstranění zásobníku nasazení

Dokončeno

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.

Snímek obrazovky znázorňující upozornění příkazového řádku Azure CLI, že zásobník nasazení už existuje

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