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 パラメーター ファイルのファイル拡張子は .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
の値を指定するよう求められます。 この混乱を回避するには、デプロイ コマンドに使用されていないパラメーター名を使用してください。
関連するコンテンツ
- Bicep ファイルでパラメーターを定義する方法の詳細については、「Bicep のパラメーター」を参照してください。
- 機密性の高い値を取得する方法については、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してください。