デプロイ スクリプトをパラメーター化する
前のユニットでは、Azure Resource Manager (ARM) テンプレートにいくつかのカスタム動作を追加し、新しいアプリケーション環境のストレージ アカウントで開始コンテンツをステージングしました。 これにより、1 つのアプリケーション チームの特定の問題が解決します。
デプロイ スクリプトの適応性を高める方法の 1 つは、スクリプトにデータを提供することです。 コマンド ライン引数と環境変数の 2 つのオプションがあります。
注意
このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。
コマンド ライン引数の使用
deploymentScripts
リソースにデータを渡すための最初のオプションは、arguments
プロパティをカスタマイズすることです。 arguments
プロパティは、コマンド ラインで指定したものと同じように、引数の文字列を受け取ります。 これらの引数は、スクリプトを実行する Azure コンテナー インスタンスの command
プロパティに指定されます。
Note
いくつかの解析が行われるため、arguments
プロパティのいくつかのバリエーションをテストします。 これは、Windows シェルがコマンド ラインを解析するのと同じ方法で、文字列の配列に分割されます。
"properties": {
"arguments": "-Name Learner",
"azPowerShellVersion": "3.0",
"scriptContent": "
param ([string]$Name)
$output = \"Hello $Name!\"
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
",
"retentionInterval":"P1D"
}
properties: {
arguments: '-Name Learner'
azPowerShellVersion: '3.0'
scriptContent: '''
param ([string]$Name)
$output = "Hello $Name!"
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
'''
retentionInterval: 'P1D'
}
環境変数の使用
2 つ目のオプションは、スクリプトがアクセスできる環境変数を作成することです。
"properties": {
"arguments": "-Name Learner",
"environmentVariables:": [
{
"name": "Subject",
"value": "Deployment Scripts"
}
],
"azPowerShellVersion": "3.0",
"scriptContent": "
param ([string]$Name)
$output = \"Hello $Name!\"
$output += \"Learning about $env:Subject can be very helpful in your deployments.\"
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
",
"retentionInterval":"P1D"
}
properties: {
arguments: '-Name Learner'
environmentVariables: [
{
name: 'Subject'
value: 'Deployment Scripts'
}
]
azPowerShellVersion: '3.0'
scriptContent: '''
param ([string]$Name)
$output = "Hello $Name!"
$output += "Learning about $env:Subject can be very helpful in your deployments."
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
'''
retentionInterval: 'P1D'
}
環境変数を使う利点の 1 つは、デプロイ スクリプトに渡す必要のあるシークレットに対して secureValue
オプションを使用できることです。
"properties": {
"arguments": "-Name Learner",
"environmentVariables:": [
{
"name": "Subject",
"value": "Deployment Scripts"
},
{
"name": "MySecretValue",
"secureValue": "PleaseDoNotPrintMeToTheConsole!"
}
],
"azPowerShellVersion": "3.0",
"scriptContent": "
param ([string]$Name)
$output = \"Hello $Name!\"
$output += \"Learning about $env:Subject can be very helpful in your deployments.\"
$output += \"Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way.\"
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
",
"retentionInterval":"P1D"
}
properties: {
arguments: '-Name Learner'
environmentVariables: [
{
name: 'Subject'
value: 'Deployment Scripts'
}
{
name: 'MySecretValue'
secureValue: 'PleaseDoNotPrintMeToTheConsole!'
}
]
azPowerShellVersion: '3.0'
scriptContent: '''
param ([string]$Name)
$output = "Hello $Name!"
$output += "Learning about $env:Subject can be very helpful in your deployments."
$output += "Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way."
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
'''
retentionInterval: 'P1D'
}
パラメーターを渡す
これまで説明したとおり、デプロイ スクリプトのプロパティでパラメーター値を直接設定できます。 渡すことができる値には、他にもいくつかのオプションがあります。 以前に作成したリソース、テンプレートで宣言された変数、デプロイ時にテンプレートに直接渡されるパラメーターの動的な値を使用できます。
これらのシナリオは、arguments
または environmentVariables
プロパティのテンプレート関数から使用できます。 任意の ARM テンプレート関数を使用して値にアクセスし、テンプレートに渡すことができます。 これらの関数には、reference
、parameters
、または variables
が含まれます。
これらのシナリオは、arguments
または environmentVariables
プロパティのテンプレート関数から使用できます。 Bicep の機能のいずれかを使用して値にアクセスし、テンプレートに渡すことができます。たとえば、シンボリック名を使用して他のリソースからプロパティを参照したり、パラメーターと変数を参照したりすることができます。