デプロイ スタックにリソースを追加する
預金アプリケーションは、開発を通じて進化し続けています。 チームは日々リソースを追加し、機能をテストしています。 既存の Log Analytics ワークスペースと新しい Application Insights インスタンスを使用して、アプリケーションに監視機能を追加しようとしています。 あなたは、リソースを引き続き 1 つのまとまった単位として管理したいと考えています。 そのため、既存のリソースと新しいリソースの両方をデプロイ スタックに追加する方法について、詳しく学ぶ必要があります。
このユニットでは、既存のリソースと新しいリソースの両方をマネージド リソースとしてデプロイ スタックに追加する方法について学習します。
Note
このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。
既存のリソースを追加する
アプリケーションで使用するリソースは、時間の経過と共に変化します。 Azure の既存のリソースを含めるように、デプロイ スタックを更新するにはどうすればよいでしょうか。
Azure に既に存在するリソースを定義するには、Bicep を使用することができます。 既存のリソースの定義は、若干の違いはありますが、新しいリソースの定義と似ているところがあります。 たとえば、既存のリソースは、existing
キーワードを使用して、リソース宣言で定義できます。
resource logAnalyticsWorkspace 'Microsoft.OperationsManagement/solutions@2015-11-01-preview' existing = {
name: 'log-deposits'
}
既存のリソースをマネージド リソースとしてデプロイ スタックに追加する場合は、この existing
キーワードを使用する必要はありません。 Bicep ファイル、ARM JSON テンプレート、またはテンプレート仕様で既存のリソースを定義するだけです。最終的には、デプロイ スタックによって既存のリソースが管理されます。
前のユニットの Bicep ファイルを例に考えてみましょう。 このファイルでは、App Service プラン、Web アプリ、および Azure SQL サーバーとデータベースを定義しています。 既存の Log Analytics ワークスペースをデプロイ スタックに追加したいとします。 このワークスペースは、マネージド リソースが存在する同じリソース グループ内にあります。
既存の Log Analytics ワークスペースを追加するには、その定義を 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'
@description('The name of the Log Analytics Workspace.')
var logAnalyticsWorkspaceName = 'log-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'
}
}
// Resource - Log Analytics Workspace
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
name: logAnalyticsWorkspaceName
location: location
properties: {
retentionInDays: 30
sku: {
name: 'PerGB2018'
}
}
}
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
Bicep ファイルを修正したら、Bicep ファイル内のリソースに加えた変更を実装するために、デプロイ スタックを更新します。
Azure PowerShell を使用してデプロイ スタックを更新するには、Set-AzResourceGroupDeploymentStack
コマンドを使用します。
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
新しいマネージド リソースを追加する
デプロイ スタックに新しいリソースを追加するプロセスは、既存のリソースをスタックに追加するプロセスと同じです。 Bicep ファイル、ARM JSON テンプレート、またはテンプレート仕様で既存のリソースを定義するだけです。最終的には、デプロイ スタックによって新しいリソースが管理されます。
前のセクションの Bicep ファイルについて考えてみましょう。 このファイルには、App Service プラン、App Service、Azure SQL サーバーとデータベース、Log Analytics ワークスペースが定義されています。 新しい Application Insights インスタンスをデプロイ スタックに追加し、そのインスタンスを使用するように App Service を構成したいとします。 新しい Application Insights インスタンスを追加するには、その定義を 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 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'
// 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 ファイルを修正したら、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
Note
Azure CLI には、デプロイ スタックを更新するための専用のコマンドがありません。 create コマンドを使用してスタックを更新します。
スタックで更新を実行すると、スタックが現在のサブスクリプションに既に存在することを示すメッセージが表示されます。 アンマネージド パラメーターに対するアクションの値が変更されると、新しい値が警告されます。
Bicep ファイルを修正したら、Bicep ファイル内のリソースに加えた変更を実装するために、デプロイ スタックを更新します。
Azure PowerShell を使用してデプロイ スタックを更新するには、Set-AzResourceGroupDeploymentStack
コマンドを使用します。
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
ご覧のように、既存のリソースを追加するプロセスと、新しいリソースを追加するプロセスは同じです。