Parametrizar scripts de implantação

Concluído

Na unidade anterior, você adicionou algum comportamento personalizado a um modelo do Azure Resource Manager (ARM) para preparar o conteúdo inicial em uma conta de armazenamento para um novo ambiente de aplicativo. Isso resolveu um problema específico para uma equipe de aplicativos.

Uma maneira de tornar os scripts de implantação mais adaptáveis é fornecer dados para o script. Você tem duas opções, argumentos de linha de comando e variáveis de ambiente.

Nota

Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você vai praticar o que você aprende aqui em breve.

Usando argumentos de linha de comando

A primeira opção para passar dados para os deploymentScripts recursos é personalizar a arguments propriedade. A arguments propriedade usa uma cadeia de argumentos como os que você forneceria na linha de comando. Esses argumentos são fornecidos para a command propriedade da instância de contêiner do Azure que executará o script.

Nota

Algumas análises acontecem, então teste algumas variações do seu arguments estabelecimento. Ele será dividido em uma matriz de cadeias de caracteres da mesma forma que o shell do Windows analisa linhas de comando.

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

Usando variáveis de ambiente

Sua segunda opção é criar variáveis de ambiente que seus scripts possam acessar.

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

Um benefício do uso de variáveis de ambiente é que você pode usar a secureValue opção para segredos que talvez precisem ser passados para scripts de implantação.

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

Passando por parâmetros

Como você aprendeu, você pode definir valores de parâmetro diretamente nas propriedades do script de implantação. Existem várias outras opções para valores que podem ser passados. Você pode usar valores dinâmicos provenientes de recursos criados anteriormente, variáveis declaradas no modelo ou parâmetros passados diretamente para o modelo no momento da implantação.

Esses cenários estão disponíveis por meio de funções de arguments modelo na propriedade or environmentVariables . Você pode usar qualquer uma das funções de modelo ARM para acessar valores e passá-los para o modelo. Essas funções incluem reference, parameters, ou variables.

Esses cenários estão disponíveis por meio de funções de arguments modelo na propriedade or environmentVariables . Você pode usar qualquer um dos recursos do Bicep para acessar valores e passá-los para o modelo, como fazer referência a propriedades de outros recursos usando seus nomes simbólicos e fazer referência a parâmetros e variáveis.