Parametrisera distributionsskript

Slutförd

I föregående lektion lade du till ett anpassat beteende i en ARM-mall (Azure Resource Manager) för att mellanlagra startinnehåll i ett lagringskonto för en ny programmiljö. Detta löste ett specifikt problem för ett programteam.

Ett sätt att göra distributionsskript mer anpassningsbara är att tillhandahålla data till skriptet. Du har två alternativ, kommandoradsargument och miljövariabler.

Kommentar

Kommandona i den här enheten visas för att illustrera begrepp. Kör inte kommandona än. Du kommer att öva på det du lär dig här snart.

Använda kommandoradsargument

Det första alternativet för att skicka data till deploymentScripts resurserna är att anpassa arguments egenskapen. Egenskapen arguments tar en sträng med argument precis som de som du anger på kommandoraden. Dessa argument skickas till egenskapen för command den Azure-containerinstans som ska köra skriptet.

Kommentar

Viss parsning sker, så testa några varianter av din arguments egenskap. Den delas upp i en matris med strängar på samma sätt som Windows-gränssnittet parsar kommandorader.

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

Använda miljövariabler

Det andra alternativet är att skapa miljövariabler som skripten kan komma åt.

"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 fördel med att använda miljövariabler är att du kan använda secureValue alternativet för hemligheter som kan behöva skickas till distributionsskript.

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

Skicka parametrar

Som du har lärt dig kan du ange parametervärden direkt i egenskaperna för distributionsskriptet. Det finns flera andra alternativ för värden som kan skickas in. Du kan använda dynamiska värden som kommer från tidigare skapade resurser, variabler som deklarerats i mallen eller parametrar som skickas direkt till mallen vid distributionstillfället.

Dessa scenarier är tillgängliga via mallfunktioner i arguments egenskapen eller environmentVariables . Du kan använda någon av ARM-mallfunktionerna för att komma åt värden och skicka dem till mallen. Dessa funktioner omfattar reference, parameterseller variables.

Dessa scenarier är tillgängliga via mallfunktioner i arguments egenskapen eller environmentVariables . Du kan använda någon av Bicep-funktionerna för att komma åt värden och skicka dem till mallen, till exempel referera till egenskaper från andra resurser med hjälp av deras symboliska namn och referera till parametrar och variabler.