Bicep デプロイ用のパラメーター ファイルを作成する

Bicep パラメーター ファイルを使用すると、別のファイルでパラメーター値を定義し、それを main.bicep に渡すことができます。 サブスクリプション、環境、またはリージョンによって異なる値に最適です。

主な利点は次のとおりです。

  • 柔軟性を実現しながら、コードとしてのインフラストラクチャ (IaC) デプロイ間で一貫性を維持します。
  • コア インフラストラクチャを変更せずに非運用環境の適切なサイズ変更など、コストの最適化をサポートします。
  • パラメーター ファイルをソース管理に保持し、適切なファイルを各デプロイ ステージに渡すことで、合理化された CI/CD パイプラインを有効にします。

Bicep パラメーター ファイルは、 Bicep CLI バージョン 0.18.4 以降、 Azure CLI バージョン 2.47.0 以降、 および Azure PowerShell バージョン 9.7.1 以降でのみサポートされています。

以下のいずれかを使用できます。

  • ネイティブの Bicep パラメーター ファイル (.bicepparam 拡張子)、または
  • 標準の JSON パラメーター ファイル。

Bicep パラメーター ファイルのファイル拡張子は .bicepparam です。

複数の環境にデプロイするには、複数のパラメーター ファイルを作成します。 複数のパラメーター ファイルを使用する場合は、その用途に応じてラベルを付けます。 たとえば、リソースをデプロイするには、main.dev.bicepparam を開発のラベルとして、main.prod.bicepparam を運用のラベルとして使用します。

Bicepパラメーター ファイルは、Bicep ファイルを使用してデプロイできる JSON パラメーター ファイルにコンパイルできます。 詳細については、build-paramsを参照してください。 JSON パラメーター ファイルを Bicep パラメーター ファイルに逆コンパイルすることもできます。 詳細については、decompile-paramsを参照してください。

Warning

パラメーター ファイルにはパラメーター値がプレーンテキストとして保存されます。 セキュリティ上の理由から、パスワードなどの機密性の高い値ではこの方法を使用しないでください。 機密性の高い値を持つパラメーターを渡す必要がある場合は、キー コンテナーに値を保持します。 機密性の高い値は、パラメーター ファイルに追加するのではなく、getSecret 関数を使用して取得します。 詳細については、「Azure Key Vault を使用して Bicep デプロイ時にパラメーターとしてシークレットを渡す」を参照してください。

パラメーター ファイルを定義する

パラメーター ファイルでは次の形式を使用します。

using '<path>/<file-name>.bicep' | using none
extends '<path>/<file-name>.bicepparam' 

type <user-defined-data-type-name> = <type-expression>

var <variable-name> <data-type> = <variable-value>

import {<symbol_name> [as <alias_name>], ...} from '<bicep_file_name>'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>
param <third-parameter-name> = <variable-name>

パラメーターの名前と値を定義する方法を決定するには、Bicep ファイルを開きます。 Bicep ファイルの parameters セクションを確認します。 次の例は、main.bicep という名前の Bicep ファイルからのパラメーターを示しています。

@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

パラメーター ファイルで、各パラメーターの名前を使用します。 パラメーター ファイル内のパラメーター名は、Bicep ファイル内のパラメーター名と一致する必要があります。

using 'main.bicep'

param storagePrefix
param storageAccountType

using ステートメントは、Bicep パラメーター ファイルをBicep ファイルにリンクします。 複数のパラメーター ファイルを 1 つのBicep ファイルに関連付けることができます。 各パラメーター ファイルは、通常、using ステートメントを使用して特定のBicep ファイルにリンクします。

パラメーター ファイルを特定のBicep ファイルにリンクしない場合は、using none を使用します。 Bicep CLI バージョン 0.31.0 以降では、using none 機能がサポートされています。

詳細については、「Using ステートメント」を参照してください。

extends ステートメントは、基本.bicepparam ファイルからパラメーターを継承し、パラメーター値を再利用し、現在のパラメーター ファイルで選択的にオーバーライドできるようにします。 詳細については、「 拡張可能なパラメーター ファイル」を参照してください。

Visual Studio Codeにキーワード param を入力すると、リンクされたBicep ファイルから使用可能なパラメーターとその説明を入力するように求められます。

使用可能なパラメーターの候補表示のスクリーンショット。

param 名にマウス ポインターを合わせると、パラメーターのデータ型と説明を確認できます。

パラメーターのデータ型と説明のスクリーンショット。

パラメーターの型を確認します。パラメーター ファイル内のパラメーターの型は、Bicep ファイルと同じ型を使用する必要があるためです。 この例では、両方のパラメーターの型が文字列です。

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

Bicep ファイルで既定値が含まれるパラメーターを調べます。 パラメーターに既定値がある場合は、パラメーター ファイルに値を指定できますが、指定する必要はありません。 パラメーター ファイルの値によって、Bicep ファイルの既定値がオーバーライドされます。

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep uses default value if not provided.

最大長などの制限事項があるかどうかを調べるには、Bicep ファイルの許可されている値を確認します。 許可されている値が、パラメーターに指定できる値の範囲を規定します。 この例では、storagePrefix には最大 11 文字を含めることができ、storageAccountType では許可された値を指定する必要があります。

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

次の例は、さまざまなパラメーターの型 (文字列、整数、ブール値、配列、およびオブジェクト) の形式を示しています。

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

Bicep 構文を使用して、オブジェクト配列を宣言します。

パラメーター値として式を使用できます。 次に例を示します。

using './main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

環境変数はパラメーター値として参照できます。 次に例を示します。

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

変数を定義して使用できます。 ファイルで変数を使用するには、.bicepparam バージョン 0.21.X 以降を使用する必要があります。 次の例を参照してください。

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

ユーザー定義のデータ型を定義できます。 次に例を示します。

using './main.bicep'

// Define a reusable type for tags with optional properties
type TagValues = {
  environment: 'dev' | 'test' | 'production'
  project: string
}

var tagsExample TagValues = {
  environment: 'dev'
  project: 'bicep-sample'
}

param tags = tagsExample

変数、ユーザー定義データ型、およびユーザー定義関数をBicep ファイルからインポートすることもできます。 詳細については、「 インポート」を参照してください。

拡張可能なパラメーター ファイル

詳細については、「 パラメーター ファイルの拡張」を参照してください。

パラメーター ファイルの生成とビルド

パラメーター ファイルを作成するには、Visual Studio Code または Bicep CLI のいずれかを使用します。 どちらのツールの場合も、Bicep ファイルを使用してパラメーター ファイルを生成できます。 Visual Studio Code の方法については「パラメーター ファイルの生成」を、Bicep CLI の方法については「パラメーター ファイルの生成」を参照してください。

Bicep CLI から、Bicep パラメーター ファイルを JSON パラメーター ファイルにビルドできます。 詳細については、「パラメーター ファイルの構築」を参照してください。

パラメーター ファイルを使用して Bicep ファイルをデプロイする

同じデプロイ操作で、インライン パラメーターとローカル パラメーター ファイルを使用できます。 たとえば、ローカル パラメーター ファイル内の一部の値を指定し、その他の値をデプロイ中にインラインで追加できます。 ローカル パラメーター ファイルとインラインの両方でパラメーターの値を指定すると、インラインの値が優先されます。

外部 Bicep パラメーター ファイルは現在サポートされていませんが、ファイルへの URI を指定することで、外部 JSON パラメーター ファイルを使用できます。 外部パラメーター ファイルを使用する場合は、その外部ファイル内にすべてのパラメーター値を指定します。 外部ファイルを使用する場合、インラインでもローカル ファイルからも他の値を渡すことはできず、すべてのインライン パラメーターが無視されます。

次の例は、外部 JSON パラメーター ファイルを使用するAzure CLI例を示しています。

az deployment group create \
  --resource-group my-rg \
  --template-file main.bicep \
  --parameters https://storageaccount.blob.core.windows.net/templates/main.parameters.json

Azure CLI

Azure CLI から、Bicep ファイル デプロイでパラメーター ファイルを渡すことができます。

Azure CLI バージョン 2.53.0 以降と Bicep CLI バージョン 0.22.X 以降では、Bicep パラメーター ファイルを使用して Bicep ファイルをデプロイできます。 Bicep パラメーター ファイル内で using ステートメントを使用すると、--template-file スイッチにBicep パラメーター ファイルを指定するときに、--parameters スイッチを指定する必要はありません。

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

同じデプロイ操作で、インライン パラメータと場所パラメータ ファイルを使用できます。 次に例を示します。

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

詳細については、「Azure CLI を使用して Bicep ファイルをデプロイする」を参照してください。

Azure PowerShell

Azure PowerShell から、TemplateParameterFile パラメーターを使用してローカル パラメーター ファイルを渡します。

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam

同じデプロイ操作で、インライン パラメータと場所パラメータ ファイルを使用できます。 次に例を示します。

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

詳細については、Azure PowerShell での Bicep ファイルのデプロイに関するページを参照してください。 .bicep ファイルをデプロイするには、Azure PowerShell バージョン 5.6.0 以降が必要です。

Azure PowerShell コマンドのパラメーターのいずれかと同じ名前のパラメーターが Bicep ファイルに含まれている場合は、Azure PowerShell によって、Bicep ファイル内のそのパラメーター名の後ろに FromTemplate という文字が付加されます。 たとえば、Bicep ファイル内の ResourceGroupName という名前のパラメーターが、ResourceGroupName 内の New-AzResourceGroupDeployment パラメーターと競合する場合は、 の値を指定するよう求められます。 この混乱を回避するには、デプロイ コマンドに使用されていないパラメーター名を使用してください。