演習 - デプロイ スタックを更新および削除する

完了

あなたは、新しい預金アプリケーションの第 2 回目のスプリントに取り組んでいます。 Bicep ファイルで Azure SQL データベースを定義することにより、デプロイ スタックの更新をテストしたいと考えています。 今回新たに定義したリソースが、スタックによって正しく管理されているかどうか検証したいと考えています。

この演習では、以前に作成した Bicep ファイルに新規リソースを追加する形で、ファイルを更新します。 また、リソース管理に使用しているデプロイ スタックの更新と削除も行います。

  • Azure SQL データベースを追加するように Bicep ファイルを更新します。
  • デプロイ スタックを更新し、新しいデータベースをデプロイします。
  • デプロイ スタックのマネージド リソースを検証します。
  • デプロイ スタックと、関連するマネージド リソースを削除します。
  • デプロイ スタックと、関連するマネージド リソースが適切に削除されたことを検証します。

Bicep ファイルに Azure SQL データベースを追加するかたちで、ファイルを更新する

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

  2. 強調表示されたコードをファイルのパラメーター セクションに追加します。

    // 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'
    
  3. ファイルの末尾に次のコードを追加します。

    // 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 データベースがマネージド リソースとしてデプロイされるように、デプロイ スタックも更新します。

  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. sqlServerAdminUserName の値を入力するように求められます。 SQL サーバー管理者の名前を作成し、最後に Enter キーを押します。

    SQL サーバー管理者のユーザー名の入力を求める Azure CLI コマンド ラインを示すスクリーンショット。

  4. sqlServerAdminPassword の値を入力するように求められます。 SQL サーバー管理者の強固なパスワードを作成し、Enter キーを押します。

    SQL Server 管理者パスワードの入力を求める Azure CLI コマンド ラインを示すスクリーンショット。

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

Bicep ファイルの更新に合わせて、新しい Azure SQL データベースがマネージド リソースとしてデプロイされるように、デプロイ スタックも更新します。

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

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DeleteAll `
        -DenySettingsMode none
    
  2. sqlServerAdminUserName の値を入力するように求められます。 SQL サーバー管理者の名前を作成し、最後に Enter キーを押します。

    SQL サーバー管理者のユーザー名の入力を求める Azure PowerShell コマンド ラインを示すスクリーンショット。

  3. sqlServerAdminPassword の値を入力するように求められます。 SQL サーバー管理者の強固なパスワードを作成し、Enter キーを押します。

    SQL Server 管理者パスワードの入力を求める Azure PowerShell コマンド ラインを示すスクリーンショット。

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

デプロイ スタックと、関連するマネージド リソースが適切に更新されたことを検証する

更新が完了したら、デプロイ スタックが Azure SQL データベースがデプロイ スタックによって管理されていることを確認します。 デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルで次のコマンドを実行します。

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 サーバーと SQL データベースがマネージド リソースとして一覧表示されるようになりました。

更新が完了したら、デプロイ スタックが Azure SQL データベースがデプロイ スタックによって管理されていることを確認します。 デプロイ スタックの構成を表示するには、Visual Studio Code のターミナルで次のコマンドを実行します。

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 サーバーと SQL データベースがマネージド リソースとして一覧表示されるようになりました。

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

  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 を使用してリソース グループを削除するためのコマンド ラインの確認を示すスクリーンショット。