Parameteriser installationsscripts

Fuldført

I det forrige undermodul har du føjet en brugerdefineret funktionsmåde til en AZURE Resource Manager-skabelon (ARM) for at fasestarte indhold på en lagerkonto for et nyt programmiljø. Dette løste et specifikt problem for ét programteam.

En måde at gøre udrulningsscripts mere tilpassede på er ved at levere data til scriptet. Du har to muligheder: kommandolinjeargumenter og miljøvariabler.

Seddel

Kommandoerne i dette undermodul vises for at illustrere begreber. Kør ikke kommandoerne endnu. Du skal snart øve dig i det, du lærer her.

Brug af kommandolinjeargumenter

Den første mulighed for at overføre data til deploymentScripts ressourcer er at tilpasse egenskaben arguments. Egenskaben arguments tager en streng af argumenter på samme måde som dem, du ville angive på kommandolinjen. Disse argumenter leveres til egenskaben command for den Azure-objektbeholderforekomst, der kører scriptet.

Seddel

Nogle fortolkninger sker, så test nogle variationer af din arguments egenskab. Den opdeles i en matrix af strenge på samme måde, som kommandolinjerne i Windows Shell.

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

Brug af miljøvariabler

Din anden mulighed er at oprette miljøvariabler, som dine scripts kan få adgang til.

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

En af fordelene ved at bruge miljøvariabler er, at du kan bruge indstillingen secureValue til hemmeligheder, der muligvis skal overføres til installationsscripts.

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

Gennemgående parametre

Som du har lært, kan du angive parameterværdier direkte i egenskaberne for installationsscriptet. Der er flere andre indstillinger for værdier, der kan overføres. Du kan bruge dynamiske værdier, der kommer fra tidligere oprettede ressourcer, variabler, der er erklæret i skabelonen, eller parametre, der overføres direkte til skabelonen på udrulningstidspunktet.

Disse scenarier er tilgængelige via skabelonfunktioner i egenskaben arguments eller environmentVariables. Du kan bruge en af ARM-skabelonfunktionerne til at få adgang til værdier og overføre dem til skabelonen. Disse funktioner omfatter reference, parameterseller variables.

Disse scenarier er tilgængelige via skabelonfunktioner i egenskaben arguments eller environmentVariables. Du kan bruge en af Bicep-funktionerne til at få adgang til værdier og overføre dem til skabelonen, f.eks. henvise til egenskaber fra andre ressourcer ved hjælp af deres symbolske navne og henvise til parametre og variabler.