演習 - デプロイ スタックから管理対象リソースをデタッチして削除する
新しい預金アプリケーションのスプリント 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 ファイルを変更します。
Visual Studio Code で main.bicep ファイルを開きます。
ファイルの 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'
ファイルの 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 } }
変更をファイルに保存します。
管理対象リソースをデタッチするようにデプロイ スタックを更新する
Bicep ファイルが変更されたら、Log Analytics ワークスペースと Application Insights インスタンスがスタックからデタッチされるようにデプロイ スタックを更新します。 この結果を達成するには、--action-on-unmanage detachAll
を使用します。
デプロイ スタックを更新するには、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
スタックが現在のサブスクリプションに既に存在するというメッセージが表示されます。 アンマネージド パラメーターのアクションの値が変更されていた場合、警告によって新しい値が通知されます。
y
を押し、その後 Enter キーを押します。
次のタスクに進む前に、更新操作が完了するまで待機します。
Bicep ファイルが変更されたら、Log Analytics ワークスペースと Application Insights インスタンスがスタックからデタッチされるようにデプロイ スタックを更新します。 この結果を達成するには、ActionOnUnmanage DetachAll
を使用します。
デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
次のタスクに進む前に、更新操作が完了するまで待機します。
デプロイ スタックの管理対象リソースとデタッチされたリソースを検証する
更新が完了したら、デプロイ スタックで Log Analytics ワークスペースと Application Insights インスタンスが管理されなくなったことを検証します。
デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
出力の
actionOnUnmanage
セクションに注目してください。 値はすべてdetach
に設定されています。 この結果は、--action-on-unmanage detachAll
を使用してデプロイ スタックの更新を行ったためです。"actionOnUnmanage": { "managementGroups": "detach", "resourceGroups": "detach", "resources": "detach" },
今度は、出力の 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 インスタンスが管理されなくなったことを検証します。
デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
resourcesCleanupAction
、resourceGroupsCleanupAction
、managementGroupsCleanupAction
の値に注目してください。 値はすべてdetach
に設定されています。 この結果は、-ActionOnUnmanage DetachAll
を使用してデプロイ スタックの更新を行ったためです。resourcesCleanupAction : detach resourceGroupsCleanupAction : detach managementGroupsCleanupAction : detach
今度は、出力の 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 でデプロイ スタックを検証してみましょう。
Azure ポータルにアクセスします。
左側のパネルで、[リソース グループ] を選択します。
rg-depositsApplication を選択します。
必要に応じて、[設定] メニューを展開します。
[デプロイ スタック] を選択します。
[stack-deposits] を選択します。
4 つの管理対象リソースと 2 つのデタッチされたリソース (Log Analytics と Application Insights) があることを確認します。
Bicep ファイルを変更して、Azure SQL サーバーとデータベースをデタッチして削除する
預金チームは、Azure SQL サーバーとデータベースをデプロイ スタックと Azure からデタッチして削除するよう要求しました。 まず、Bicep ファイルを変更します。
Visual Studio Code で main.bicep ファイルをもう一度開きます。
強調表示されたコードをファイルの 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)}'
ファイルの 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' } }
変更をファイルに保存します。
管理対象リソースを削除するようにデプロイ スタックを更新する
Bicep ファイルが変更されたら、Azure SQL サーバーとデータベースがスタックからデタッチされ、Azure から削除されるようにデプロイ スタックを更新します。 この結果を達成するには、--action-on-unmanage deleteAll
を使用します。 このアクションにより、前のセクションでデタッチした Log Analytics ワークスペースと Application Insights インスタンスも削除されます。
デプロイ スタックを更新するには、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
スタックが現在のサブスクリプションに既に存在するというメッセージが表示されます。 アンマネージド パラメーターのアクションの値が変更されていた場合、警告によって新しい値が通知されます。
y
を押し、その後 Enter キーを押します。次のタスクに進む前に、更新操作が完了するまで待機します。
Bicep ファイルが変更されたら、Azure SQL サーバーとデータベースがスタックからデタッチされ、Azure から削除されるようにデプロイ スタックを更新します。 これを達成するには、-ActionOnUnmanage DeleteAll
を使用します。 このアクションにより、前のセクションでデタッチした Log Analytics ワークスペースと Application Insights インスタンスも削除されます。
デプロイ スタックを更新するには、Visual Studio Code のターミナルで次のコマンドを実行します。
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DeleteAll ` -DenySettingsMode none
次のタスクに進む前に、更新操作が完了するまで待機します。
デプロイ スタックの管理対象リソースを検証する
更新が完了したら、デプロイ スタックで Log Analytics ワークスペース、Application Insights インスタンス、および Azure SQL サーバーとデータベースが管理されなくなったことを検証します。 また、これらのリソースが Azure から削除されていることも確認します。
デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
出力の
actionOnUnmanage
セクションに注目してください。 値はすべてdelete
に設定されています。 この結果は、--action-on-unmanage deleteAll
を使用してデプロイ スタックの更新を行ったためです。"actionOnUnmanage": { "managementGroups": "delete", "resourceGroups": "delete", "resources": "delete" },
今度は、出力の 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 から削除されていることも確認します。
デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルから以下のコマンドを実行します。
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
resourcesCleanupAction
、resourceGroupsCleanupAction
、managementGroupsCleanupAction
の値に注目してください。 値はすべてdelete
に設定されています。 この結果は、-ActionOnUnmanage DeleteAll
を使用してデプロイ スタックの更新を行ったためです。resourcesCleanupAction : delete resourceGroupsCleanupAction : delete managementGroupsCleanupAction : delete
今度は、出力の resources セクションに注目してください。 Azure SQL サーバーとデータベースが管理対象リソースとして表示されなくなりました。
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
Azure portal に戻ります。
左側のパネルで、[リソース グループ] を選択します。
rg-depositsApplication を選択します。
必要に応じて、[設定] メニューを展開します。
[デプロイ スタック] を選択します。
[stack-deposits] を選択します。
App Service プランと App Service が管理対象リソースとして引き続き存在し、その他のリソースが削除されていることを確認します。
デプロイ スタックを削除する
デプロイ スタックとそのマネージド リソースを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。
az stack group delete \ --name stack-deposits \ --resource-group rg-depositsApplication \ --action-on-unmanage deleteAll
スタックと指定したリソースを削除するかどうかを確認するメッセージが表示されます。
削除操作が完了したら、Azure ポータルにアクセスし、デプロイ スタックとそのリソースが削除されていることを確認します。
これまでの演習で使用したリソース グループを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。
az group delete \ -name rg-depositsApplication
リソース グループを削除するかどうかを確認するメッセージが表示されます。 Y キーを押し、次に Enter キーを押します。
デプロイ スタックとそのマネージド リソースを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。
Remove-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -ActionOnUnmanage DeleteAll
スタックと指定したリソースを削除するかどうかを確認するメッセージが表示されます。
削除操作が完了したら、Azure ポータルにアクセスし、デプロイ スタックとそのリソースが削除されていることを確認します。
これまでの演習で使用したリソース グループを削除するには、Visual Studio Code のターミナルで次のコマンドを実行します。
Remove-AzResourceGroup ` -Name rg-depositsApplication
リソース グループを削除するかどうかを確認するメッセージが表示されます。 Y キーを押し、次に Enter キーを押します。
Azure portal に戻ります。
左側のパネルで、[リソース グループ] を選択します。
rg-depositsApplication が存在しなくなったことを確認します。