배포 스크립트 매개 변수화

완료됨

이전 단원에서는 ARM(Azure Resource Manager) 템플릿에 몇 가지 사용자 지정 동작을 추가하여 새 애플리케이션 환경에 대한 스토리지 계정의 시작 콘텐츠를 스테이징했습니다. 이렇게 하여 한 애플리케이션 팀의 특정 문제가 해결되었습니다.

배포 스크립트를 보다 쉽게 조정할 수 있도록 하는 한 가지 방법은 스크립트에 데이터를 제공하는 것입니다. 명령줄 인수와 환경 변수의 두 가지 옵션이 있습니다.

참고

이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.

명령줄 인수 사용

deploymentScripts 리소스에 데이터를 전달하는 첫 번째 옵션은 arguments 속성을 사용자 지정하는 것입니다. arguments 속성은 명령줄에서 제공하는 것과 같은 일련의 인수를 사용합니다. 이러한 인수는 스크립트를 실행할 Azure 컨테이너 인스턴스의 command 속성에 제공됩니다.

참고

일부 구문 분석이 발생하므로 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'
}

환경 변수 사용

두 번째 옵션은 스크립트가 액세스할 수 있는 환경 변수를 만드는 것입니다.

"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'
}

환경 변수를 사용하면 배포 스크립트에 전달이 필요한 비밀에 대한 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 기능을 사용하여 값에 액세스하고 템플릿에 전달할 수 있습니다. 예를 들어 기호 이름을 사용하여 다른 리소스의 속성을 참조하고 매개 변수 및 변수를 참조할 수 있습니다.