Обновление и удаление стека развертывания

Завершено

Стеки развертывания позволяют управлять ресурсами Azure с помощью стандартных процессов и шаблонов. По мере изменения приложения это делает ресурсы, составляющие приложение. Добавление и удаление управляемых ресурсов является важной частью управления жизненным циклом.

Вы завершили спринт 1 и первоначальное развертывание приложения депозитов с помощью стеков развертывания. Теперь необходимо подготовиться к спринту 2, введя новые службы в приложение. Вы хотите узнать больше об обновлении и удалении стеков развертывания и управляемых ресурсов.

В этом уроке вы узнаете, как обновить стек развертывания, добавив ресурсы в файл Bicep. Кроме того, вы узнаете, как удалить стек развертывания и его управляемые ресурсы.

Примечание.

Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.

Обновление стека развертывания

По мере развития приложения это делает свои ресурсы. Как обновить стек развертывания и управляемые ресурсы при добавлении новых служб и компонентов? Какие ситуации требуют обновления стека развертывания? Добавление нового ресурса или изменение свойства существующего управляемого ресурса потребует обновления стека развертывания.

Обновление стека означает обновление ресурсов, определенных в шаблоне JSON ARM, Bicep-файле или спецификации шаблона. После внесения изменений в файл шаблона мы обновим стек развертывания с помощью соответствующей команды.

Предположим, что наше приложение депозитов должно добавить новую базу данных SQL Azure, и мы хотим, чтобы стек развертывания управлял базой данных. Чтобы добавить новую базу данных, мы обновим файл Bicep, чтобы определить новый сервер SQL Azure и базу данных.

// 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'
  }
}

Выделенный код определяет новую базу данных SQL Azure для нашего приложения депозитов. При определении нового ресурса необходимо обновить стек развертывания.

Чтобы обновить стек развертывания с помощью Azure CLI, используйте 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

Примечание.

Azure CLI не имеет выделенной команды для обновления стека развертывания. Используйте команду create для обновления стека.

При выполнении обновления в стеке вы получите сообщение о том, что стек уже существует в текущей подписке. Если значение действия для неуправляемого параметра изменяется, предупреждение оповещает вас о новых значениях.

Снимок экрана: предупреждение командной строки Azure CLI о том, что стек развертывания уже существует.

Чтобы убедиться, что стек управляет новыми ресурсами, используйте 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"
}

Выделенный код показывает новый сервер SQL Azure и базу данных SQL Azure, как управляемую стеком развертывания.

Чтобы обновить стек развертывания с помощью Azure PowerShell, используйте Set-AzResourceGroupDeploymentStack команду.

Set-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Чтобы убедиться, что стек управляет новыми ресурсами, используйте 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               ""

Выделенный код показывает новый сервер SQL Azure и базу данных SQL Azure, как управляемую стеком развертывания.

В следующем модуле вы работаете над управлением жизненным циклом ресурсов, включая добавление, обновление, отключение и удаление управляемых ресурсов.

Удаление стека развертывания

Надежная очистка ресурсов — это ключевая функция стека развертывания. При удалении стека развертывания можно также удалить управляемые ресурсы, группы ресурсов и группы управления. Использование одного вызова API устраняет необходимость понимания зависимостей. Как и при создании и обновлении стеков развертывания, действие в неуправляемом параметре определяет, как Azure обрабатывает отсоединенные ресурсы.

Примечание.

В этом модуле мы работаем с стеками развертывания с областью действия группы resrouce. В этой ситуации группа ресурсов не управляется стеком. Значение delete all для действия в неуправляемом параметре не удаляет группу ресурсов, в которой существует стек. Необходимо удалить группу ресурсов после удаления стека и ее ресурсов.

Чтобы удалить стек развертывания с помощью Azure CLI, используйте az stack group delete команду. Аргумент --action-on-unmanaged определяет, как Azure обрабатывает отсоединяемые ресурсы, группы ресурсов и группы управления.

az stack group delete \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --action-on-unmanage deleteAll

Чтобы удалить стек развертывания с помощью Azure PowerShell, используйте Remove-AzResourceGroupDeploymentStack команду. Аргумент -ActionOnUnmanage определяет, как Azure обрабатывает отсоединяемые ресурсы, группы ресурсов и группы управления.

Remove-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -ActionOnUnmanage -DeleteAll