演習 - デプロイ スタックから管理対象リソースをデタッチして削除する

完了

新しい預金アプリケーションのスプリント 3 が終了する予定です。 預金チームから、Log Analytics ワークスペースと Application Insights インスタンスをデプロイ スタックからデタッチするよう要求がありました。 これらのリソースは、引き続き Azure 内に存在する必要があります。 さらに、Azure SQL サーバーとデータベースをデプロイ スタックと Azure から削除するよう要求がありました。

この演習では、預金アプリケーションに不要になった Azure リソースをデプロイ スタックからデタッチして削除します。 まず、Azure 内に引き続き存在する必要があるリソースをデプロイ スタックからデタッチします。 その後、不要になったリソースをデプロイ スタックから削除します。 最後に、デプロイ スタック、その管理対象リソース、リソース グループを削除します。

このプロセスでは、次のことを行います。

  • Bicep ファイルを変更して、Log Analytics ワークスペースと Application Insights インスタンスを削除する
  • 管理対象リソースをデタッチするようにデプロイ スタックを更新する
  • デプロイ スタックの管理対象リソースとデタッチされたリソースを検証する
  • Bicep ファイルを変更して、Azure SQL サーバーとデータベースを削除する
  • 管理対象リソースを削除するようにデプロイ スタックを更新する
  • デプロイ スタックの管理対象リソースと削除されたリソースを検証する
  • デプロイ スタックと、関連するマネージド リソースを削除します。
  • デプロイ スタックと、関連するマネージド リソースが適切に削除されたことを検証します。

Bicep ファイルを変更して、Log Analytics ワークスペースと Application Insights インスタンスをデタッチする

預金チームから、Log Analytics ワークスペースと Application Insights インスタンスをデプロイ スタックからデタッチするよう要求がありました。 また、これらのリソースが Azure に存在し続けるようにすることも要求されました。 まず、Bicep ファイルを変更します。

  1. Visual Studio Code で main.bicep ファイルを開きます。

  2. ファイルの variables セクションから強調表示されたコードを削除します。

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. ファイルの resources セクションから強調表示されたコードを削除します。

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
    // 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'
      }
    }
    
    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. 変更をファイルに保存します。

管理対象リソースをデタッチするようにデプロイ スタックを更新する

Bicep ファイルが変更されたら、Log Analytics ワークスペースと Application Insights インスタンスがスタックからデタッチされるようにデプロイ スタックを更新します。 この結果を達成するには、--action-on-unmanage detachAll を使用します。

  1. デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    az stack group create \
        --name stack-deposits \
        --resource-group 'rg-depositsApplication' \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. スタックが現在のサブスクリプションに既に存在するというメッセージが表示されます。 アンマネージド パラメーターのアクションの値が変更されていた場合、警告によって新しい値が通知されます。 y を押し、その後 Enter キーを押します。

    デプロイ スタックが既に存在することを示す Azure CLI コマンド ラインの警告を示すスクリーンショット。

次のタスクに進む前に、更新操作が完了するまで待機します。

Bicep ファイルが変更されたら、Log Analytics ワークスペースと Application Insights インスタンスがスタックからデタッチされるようにデプロイ スタックを更新します。 この結果を達成するには、ActionOnUnmanage DetachAll を使用します。

  1. デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. 次のタスクに進む前に、更新操作が完了するまで待機します。

デプロイ スタックの管理対象リソースとデタッチされたリソースを検証する

更新が完了したら、デプロイ スタックで Log Analytics ワークスペースと Application Insights インスタンスが管理されなくなったことを検証します。

  1. デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. 出力の actionOnUnmanage セクションに注目してください。 値はすべて detach に設定されています。 この結果は、--action-on-unmanage detachAll を使用してデプロイ スタックの更新を行ったためです。

    "actionOnUnmanage": {
      "managementGroups": "detach",
      "resourceGroups": "detach",
      "resources": "detach"
    },
    
  3. 今度は、出力の resources セクションに注目してください。 Log Analytics ワークスペースと Application Insights インスタンスが管理対象リソースとして表示されなくなりました。

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    

更新が完了したら、デプロイ スタックで Log Analytics ワークスペースと Application Insights インスタンスが管理されなくなったことを検証します。

  1. デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. resourcesCleanupActionresourceGroupsCleanupActionmanagementGroupsCleanupAction の値に注目してください。 値はすべて detach に設定されています。 この結果は、-ActionOnUnmanage DetachAll を使用してデプロイ スタックの更新を行ったためです。

    resourcesCleanupAction        : detach
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach
    
  3. 今度は、出力の resources セクションに注目してください。 Log Analytics ワークスペースと Application Insights インスタンスが管理対象リソースとして表示されなくなりました。

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
    

Azure portal でデプロイ スタックを検証してみましょう。

  1. Azure ポータルにアクセスします。

  2. 左側のパネルで、[リソース グループ] を選択します。

  3. rg-depositsApplication を選択します。

  4. 必要に応じて、[設定] メニューを展開します。

  5. [デプロイ スタック] を選択します。

  6. [stack-deposits] を選択します。

  7. 4 つの管理対象リソースと 2 つのデタッチされたリソース (Log Analytics と Application Insights) があることを確認します。

    デプロイ スタックおよびその管理対象リソースとデタッチされたリソースを表す Azure portal が示されているスクリーンショット。

Bicep ファイルを変更して、Azure SQL サーバーとデータベースをデタッチして削除する

預金チームは、Azure SQL サーバーとデータベースをデプロイ スタックと Azure からデタッチして削除するよう要求しました。 まず、Bicep ファイルを変更します。

  1. Visual Studio Code で main.bicep ファイルをもう一度開きます。

  2. 強調表示されたコードをファイルの parameters セクションから削除します。

    // 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)}'
    
  3. ファイルの resources セクションから強調表示されたコードを削除します。

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        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'
      }
    }
    
  4. 変更をファイルに保存します。

管理対象リソースを削除するようにデプロイ スタックを更新する

Bicep ファイルが変更されたら、Azure SQL サーバーとデータベースがスタックからデタッチされ、Azure から削除されるようにデプロイ スタックを更新します。 この結果を達成するには、--action-on-unmanage deleteAll を使用します。 このアクションにより、前のセクションでデタッチした Log Analytics ワークスペースと Application Insights インスタンスも削除されます。

  1. デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage deleteAll \
        --deny-settings-mode none
    
  2. スタックが現在のサブスクリプションに既に存在するというメッセージが表示されます。 アンマネージド パラメーターのアクションの値が変更されていた場合、警告によって新しい値が通知されます。 y を押し、その後 Enter キーを押します。

    デプロイ スタックが既に存在することを示す Azure CLI コマンド ラインの警告を示すスクリーンショット。

  3. 次のタスクに進む前に、更新操作が完了するまで待機します。

Bicep ファイルが変更されたら、Azure SQL サーバーとデータベースがスタックからデタッチされ、Azure から削除されるようにデプロイ スタックを更新します。 これを達成するには、-ActionOnUnmanage DeleteAll を使用します。 このアクションにより、前のセクションでデタッチした Log Analytics ワークスペースと Application Insights インスタンスも削除されます。

  1. デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DeleteAll `
        -DenySettingsMode none
    
  2. 次のタスクに進む前に、更新操作が完了するまで待機します。

デプロイ スタックの管理対象リソースを検証する

更新が完了したら、デプロイ スタックで Log Analytics ワークスペース、Application Insights インスタンス、および Azure SQL サーバーとデータベースが管理されなくなったことを検証します。 また、これらのリソースが Azure から削除されていることも確認します。

  1. デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. 出力の actionOnUnmanage セクションに注目してください。 値はすべて delete に設定されています。 この結果は、--action-on-unmanage deleteAll を使用してデプロイ スタックの更新を行ったためです。

    "actionOnUnmanage": {
      "managementGroups": "delete",
      "resourceGroups": "delete",
      "resources": "delete"
    },
    
  3. 今度は、出力の resources セクションに注目してください。 Azure SQL サーバーとデータベースが管理対象リソースとして表示されなくなりました。

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    

更新が完了したら、デプロイ スタックで Log Analytics ワークスペース、Application Insights インスタンス、および Azure SQL サーバーとデータベースが管理されなくなったことを検証します。 また、これらのリソースが Azure から削除されていることも確認します。

  1. デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. resourcesCleanupActionresourceGroupsCleanupActionmanagementGroupsCleanupAction の値に注目してください。 値はすべて delete に設定されています。 この結果は、-ActionOnUnmanage DeleteAll を使用してデプロイ スタックの更新を行ったためです。

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  3. 今度は、出力の resources セクションに注目してください。 Azure SQL サーバーとデータベースが管理対象リソースとして表示されなくなりました。

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
    
  1. Azure portal に戻ります。

  2. 左側のパネルで、[リソース グループ] を選択します。

  3. rg-depositsApplication を選択します。

  4. 必要に応じて、[設定] メニューを展開します。

  5. [デプロイ スタック] を選択します。

  6. [stack-deposits] を選択します。

  7. App Service プランと App Service が管理対象リソースとして引き続き存在し、その他のリソースが削除されていることを確認します。

    デプロイ スタックとその 2 つの管理対象リソースを表す Azure portal を示すスクリーンショット。

デプロイ スタックを削除する

  1. デプロイ スタックとそのマネージド リソースを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    az stack group delete \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --action-on-unmanage deleteAll
    
  2. スタックと指定したリソースを削除するかどうかを確認するメッセージが表示されます。

    Azure CLI でデプロイ スタックを削除しようとした時に表示される確認用のスクリーンショット。

  3. 削除操作が完了したら、Azure ポータルにアクセスし、デプロイ スタックとそのリソースが削除されていることを確認します。

  4. これまでの演習で使用したリソース グループを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    az group delete \
        -name rg-depositsApplication
    
  5. リソース グループを削除するかどうかを確認するメッセージが表示されます。 Y キーを押し、次に Enter キーを押します。

    Azure CLI でリソース グループを削除しようとした時に表示される確認用のスクリーンショット。

  1. デプロイ スタックとそのマネージド リソースを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    Remove-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -ActionOnUnmanage DeleteAll
    
  2. スタックと指定したリソースを削除するかどうかを確認するメッセージが表示されます。

    Azure PowerShell でデプロイ スタックを削除しようとした時に表示される確認用のスクリーンショット。

  3. 削除操作が完了したら、Azure ポータルにアクセスし、デプロイ スタックとそのリソースが削除されていることを確認します。

  4. これまでの演習で使用したリソース グループを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。

    Remove-AzResourceGroup `
        -Name rg-depositsApplication
    
  5. リソース グループを削除するかどうかを確認するメッセージが表示されます。 Y キーを押し、次に Enter キーを押します。

    Azure PowerShell でリソース グループを削除しようとした時に表示される確認用のスクリーンショット。

  1. Azure portal に戻ります。

  2. 左側のパネルで、[リソース グループ] を選択します。

  3. rg-depositsApplication が存在しなくなったことを確認します。