Параметризация сценариев развертывания

Завершено

В предыдущем модуле вы научились добавлять пользовательское поведение в шаблон Azure Resource Manager (ARM) для промежуточного хранения содержимого в учетной записи хранения для новой среды приложения. Это решение решило определенную проблему для одной команды приложений.

Один из способов сделать повысить адаптивность сценариев развертывания является добавление в сценарий данных. Есть два варианта: аргументы командной строки и переменные среды.

Примечание.

Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.

Использование аргументов командной строки

Первый вариант передачи данных в deploymentScripts ресурсы — это настройка свойства arguments. Свойство arguments принимает строку аргументов точно так же, как аргументы, которые добавляются в командную строку. Эти аргументы предоставляются command свойству экземпляра контейнера Azure, который запускает скрипт.

Примечание.

Выполняется анализ, поэтому необходимо протестировать ряд вариаций свойства 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 для доступа к значениям и передать их в шаблон. Например, можно ссылаться на свойства из других ресурсов с помощью символьных имен и ссылаться на параметры и переменные.