次の方法で共有


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

この記事では、パラメーターをスクリプト内のインライン値として渡す代わりに使用できるパラメーター ファイルを作成する方法について説明します。 .bicepparam ファイル拡張子を持つ Bicep パラメーター ファイルまたはパラメーター値を含む JSON パラメーター ファイルのいずれかを使用できます。

Note

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

1 つの Bicep ファイルには複数の Bicep パラメーター ファイルを関連付けることができます。 ただし、各 Bicep パラメーター ファイルは、1 つの特定の Bicep ファイルを対象としています。 このリレーションシップを確立するには、Bicep パラメーター ファイル内の using ステートメントを適用します。

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

パラメーター ファイル

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

using '<path>/<file-name>.bicep'

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

using ステートメントを適用するには、Bicep ファイル、JSON Azure Resource Manager テンプレート、Bicep モジュール、テンプレートの仕様を使用します。 次に例を示します。

using './main.bicep'
...
using './azuredeploy.json'
...
using 'br/public:avm/res/storage/storage-account:0.9.0' 
...
using 'br:myacr.azurecr.io/bicep/modules/storage:v1'
...
using 'ts:00000000-0000-0000-0000-000000000000/myResourceGroup/storageSpec:1.0'
...

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

既定値を指定した式を使用できます。 次に例を示します。

using 'main.bicep'

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

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

using './main.bicep'

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

変数を定義して使用できます。 .bicepparam ファイル内で変数を使用するには、Bicep CLI バージョン 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
}

Note

パラメーター ファイルにはパラメーター値がプレーンテキストとして保存されます。 セキュリティ上の理由から、パスワードなどの機密性の高い値にこの方法を使用することはお勧めしません。

機密性の高い値を含むパラメーターを渡す必要がある場合は、値をキー コンテナーに保持する必要があります。 機密性の高い値は、パラメーター ファイルに追加するのではなく、getSecret 関数を使用して取得します。 詳細については、「Azure Key Vault を使用して Bicep デプロイ時にパラメーターとしてシークレットを渡す」を参照してください。

パラメーターの型の形式

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

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 構文を使用して、オブジェクト配列を宣言します。

ファイル名

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

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

パラメーター値を定義する

パラメーターの名前と値を定義する方法を決定するには、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 ファイルに結びつけます。 詳細については、「Using ステートメント」を参照してください。

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'

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

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

Bicep パラメーター ファイルのビルド

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

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

Azure CLI

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

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

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 以降が必要です。

パラメーターの優先順位

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

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

パラメーター名の競合

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