Parametrisera distributionsskript
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
, parameters
eller 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.