Parametrisieren von Bereitstellungsskripts
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. Diese Lösung hat 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 der command Eigenschaft der Azure-Containerinstanz bereitgestellt, die das Skript ausführt.
Hinweis
Es folgen einige Analysen. Daher sollten Sie einige Variationen Ihrer arguments-Eigenschaft testen. Der Eigenschaftswert wird auf die gleiche Weise 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 der Verwendung von Umgebungsvariablen besteht darin, dass Sie die secureValue Option für geheime Schlüssel verwenden können, die möglicherweise in 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 alle Bicep-Features verwenden, um auf Werte zuzugreifen und sie an die Vorlage zu übergeben. Sie können beispielsweise auf Eigenschaften aus anderen Ressourcen verweisen, indem Sie deren symbolische Namen verwenden und auf Parameter und Variablen verweisen.