デプロイ スタックの更新と削除

完了

デプロイ スタックを使用すると、標準のプロセスとテンプレートを使用して Azure リソースを管理できます。 アプリケーションが変更されると、アプリケーションを構成するリソースも変更されます。 管理対象リソースの追加と削除は、ライフサイクル管理の重要な部分です。

デプロイ スタックを使用して、スプリント 1 と預金アプリケーションの初期展開を完了しました。 次に、スプリント 2 で新しいサービスをアプリケーションに導入する準備をする必要があります。 デプロイ スタックと管理対象リソースを更新および削除する方法の詳細を確認する必要があります。

このユニットでは、Bicep ファイルにリソースを追加してデプロイ スタックを更新する方法について説明します。 さらに、デプロイ スタックとその管理対象リソースを削除する方法について説明します。

このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。

デプロイ スタックの更新

アプリケーションが進化するにつれて、そのリソースも進化します。 新しいサービスと機能が追加されたときに、デプロイ スタックとその管理対象リソースを更新するにはどうすればよいですか? デプロイ スタックを更新する必要があるのはどのような状況ですか? 新しいリソースを追加したり、既存の管理対象リソースのプロパティを変更したりするには、デプロイ スタックを更新する必要があります。

スタックを更新することは、ARM JSON テンプレート、Bicep ファイル、またはテンプレート スペックで定義されているリソースを更新することを意味します。テンプレート ファイルに変更が加えられたら、適切なコマンドを使用してデプロイ スタックを更新します。

預金アプリケーションで新しい Azure SQL データベースを追加する必要があり、デプロイ スタックでデータベースを管理する必要があるとします。 新しいデータベースを追加するために、新しい Azure SQL サーバーとデータベースを定義するように Bicep ファイルを更新します。

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

強調表示されているコードでは、預金アプリケーション用の新しい Azure SQL データベースが定義されています。 新しいリソースを定義したら、デプロイ スタックを更新する必要があります。

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"
}

強調表示されたコードは、デプロイ スタックによって管理される新しい Azure SQL サーバーと Azure SQL データベースを示しています。

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               ""

強調表示されたコードは、デプロイ スタックによって管理される新しい Azure SQL サーバーと Azure SQL データベースを示しています。

次のモジュールでは、管理対象リソースの追加、更新、デタッチ、削除など、リソース ライフサイクルの管理に取り組みます。

デプロイ スタックの削除

信頼性の高いリソースのクリーンアップは、デプロイ スタックの重要な機能です。 デプロイ スタックを削除すると、管理対象リソース、リソース グループ、および管理グループを削除することもできます。 1 つの API 呼び出しを使用すると、依存関係を理解する必要がなくなります。 デプロイ スタックの作成と更新と同様に、アンマネージド パラメーターに対するアクションによって、Azure がデタッチされたリソースを処理する方法が決まります。

このモジュールでは、リソース グループ スコープのデプロイ スタックを使用します。 この状況では、リソース グループはスタックによって管理されません。 アンマネージド パラメーターのアクションに対する "すべて削除" 値は、スタックが存在するリソース グループを削除しません。 スタックとそのリソースが削除された後で、リソース グループを削除する必要があります。

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