デプロイ スタック内のリソースを更新する

完了

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

預金アプリケーションには大きな変更が施されている最中です。 Azure リソース プロパティの変更と、新しいリソースの追加と、既存リソースの削除を行う必要があります。 デプロイ スタックを更新するタイミングと、既存のマネージド リソースを更新する方法の詳細を学習する必要があります。

このユニットでは、どのような状況でデプロイ スタックの更新が必要になるかについて学習します。 また、デプロイ スタックによって管理されるリソースを変更する方法も学習します。

Note

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

デプロイ スタックの更新

時間の経過とともに、アプリケーションを構成するリソースは変化します。 既存リソースのプロパティを変更する必要があったり、リソースを追加または削除する必要があったり、アプリケーションが他のアプローチを通してデプロイされたリソースを統合する必要があったりします。 デプロイ スタックは、アプリケーション内の変更を実装するために更新できます。 デプロイ スタックを更新する必要があるのはどのような状況ですか?

  • マネージド リソースのプロパティの変更
  • マネージド リソースとしての既存リソースの追加
  • 新しいマネージド リソースの追加
  • マネージド リソースのデタッチ
  • マネージド リソースの削除

これらの変更はどのように実装されますか? 前のモジュールで説明したように、デプロイ スタックは、Bicep ファイル、ARM JSON テンプレート、またはテンプレート スペック内で定義されているリソースを管理します。デプロイ スタックを作成するときは、これらのファイルのいずれかを参照してリソースをデプロイします。 デプロイ スタックを更新する場合も同様です。 デプロイ スタックによって管理されるリソースを更新するには、基になるテンプレート ファイルを更新します。

既存のマネージド リソースの更新

Azure 内にデプロイされているリソースを変更するのは一般的なプラクティスです。 新しい機能を組み込んだり、その機能を強化したりするために、リソースのプロパティ値を変更することが必要な場合があります。 現在、コードとしてのインフラストラクチャを使用して Azure 内のリソースを定義している場合は、リソースのプロパティを変更する方法にはなじみがあるでしょう。 デプロイ スタックでも、このプロセスは同じです。 Bicep ファイル内でリソースに変更を加え、スタック上で更新操作を実行します。

最後のモジュールの Bicep ファイルについて考えてみましょう。 このファイルは、App Service プラン、Web アプリ、および Azure SQL サーバーとデータベースを定義しています。 ここでは App Service プランの SKU を F1 SKU から S1 SKU に変更したいものとします。

// 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: '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 ファイルを変更したら、デプロイ スタックを更新して、Bicep ファイル内のリソースに加えられた変更が実装されるようにする必要があります。

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

スタック更新が完了したら、App Service プランが S1 SKU で実行されていることを確認する必要があります。

Azure CLI を使用して App Service プランの構成を表示するには、az appservice plan show コマンドを使用します

az appservice plan show \
    --name plan-deposits
    --resource-group rg-depositsApplication

この出力は、更新が成功し、App Service プランが現在 S1 SKU で実行されていることを示しています。

"sku": {
    "capacity": 1,
    "family": "S",
    "name": "S1",
    "size": "S1",
    "tier": "Standard"
},

Bicep ファイルを変更したら、デプロイ スタックを更新して、Bicep ファイル内のリソースに加えられた変更が実装されるようにする必要があります。

Azure PowerShell を使用してデプロイ スタックを更新するには、Set-AzResourceGroupDeploymentStack コマンドを使用します。

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

スタック更新が完了したら、App Service プランが S1 SKU で実行されていることを確認する必要があります。

Azure PowerShell を使用して App Service プランの構成を確認するには、Get-AzAppServicePlan コマンドを使用します

$plan = Get-AzAppServicePlan `
    -ResourceGroupName rg-depositsApplication `
    -Name plan-deposits
$sku = $plan.Sku
$sku

この出力は、更新が成功し、App Service プランが現在 S1 SKU で実行されていることを示しています。

Name         : S1
Tier         : Standard
Size         : S1
Family       : S
Capacity     : 1