デプロイ スクリプトをパラメーター化する

完了

前のユニットでは、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 テンプレート関数を使用して値にアクセスし、テンプレートに渡すことができます。 これらの関数には、referenceparameters、または variables が含まれます。

これらのシナリオは、arguments または environmentVariables プロパティのテンプレート関数から使用できます。 Bicep の機能のいずれかを使用して値にアクセスし、テンプレートに渡すことができます。たとえば、シンボリック名を使用して他のリソースからプロパティを参照したり、パラメーターと変数を参照したりすることができます。