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

Завершено

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