Parametrisieren von Bereitstellungsskripts

Abgeschlossen

In der vorherigen Lerneinheit haben Sie einer Azure Resource Manager-Vorlage (ARM) benutzerdefiniertes Verhalten hinzugefügt, um den Startinhalt für eine neue Anwendungsumgebung in einem Speicherkonto zu stagen. Dadurch wurde ein bestimmtes Problem für ein Anwendungsteam gelöst.

Eine Möglichkeit, Bereitstellungsskripts anpassungsfähiger zu gestalten, ist die Bereitstellung von Daten für das Skript. Sie haben zwei Optionen: Befehlszeilenargumente und Umgebungsvariablen.

Hinweis

Die Befehle in dieser Lerneinheit dienen der Veranschaulichung der Konzepte. Führen Sie die Befehle jetzt noch nicht aus. Sie können das Erlernte in Kürze üben.

Verwenden von Befehlszeilenargumenten

Die erste Option zum Übergeben von Daten an die deploymentScripts-Ressourcen besteht darin, die arguments-Eigenschaft anzupassen. Die arguments-Eigenschaft nimmt genau wie die Argumente, die Sie in der Befehlszeile bereitstellen würden, eine Zeichenfolge mit Argumenten an. Diese Argumente werden an die command-Eigenschaft der Azure-Containerinstanz übergeben, die das Skript ausführen wird.

Hinweis

Es folgen einige Analysen. Daher sollten Sie einige Variationen Ihrer arguments-Eigenschaft testen. Sie wird so in ein Array von Zeichenfolgen unterteilt, wie die Windows-Shell Befehlszeilen analysiert.

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

Verwenden von Umgebungsvariablen

Die zweite Option besteht darin, Umgebungsvariablen zu erstellen, auf die Ihre Skripts zugreifen können.

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

Ein Vorteil von Umgebungsvariablen besteht darin, dass Sie die secureValue-Option für Geheimnisse verwenden können, die möglicherweise an Bereitstellungsskripts übergeben werden müssen.

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

Übergeben mithilfe von Parametern

Wie Sie gelernt haben, können Sie Parameterwerte direkt in den Eigenschaften des Bereitstellungsskripts festlegen. Es gibt mehrere andere Optionen für Werte, die übergeben werden können. Sie können dynamische Werte aus zuvor erstellten Ressourcen, in der Vorlage deklarierte Variablen oder Parameter verwenden, die zur Bereitstellungszeit direkt an die Vorlage übergeben werden.

Diese Szenarios sind über Vorlagenfunktionen in der arguments- oder environmentVariables-Eigenschaft verfügbar. Sie können jede der ARM-Vorlagenfunktionen verwenden, um auf Werte zuzugreifen und sie an die Vorlage zu übergeben. Zu diesen Funktionen gehören reference, parameters oder variables.

Diese Szenarios sind über Vorlagenfunktionen in der arguments- oder environmentVariables-Eigenschaft verfügbar. Sie können jedes der Bicep-Features verwenden, um auf Werte zuzugreifen und sie an die Vorlage zu übergeben, z. B. Verweisen auf Eigenschaften aus anderen Ressourcen mithilfe ihrer symbolischen Namen und Verweisen auf Parameter und Variablen.