Implementatiescripts parameteriseren
In de vorige les hebt u aangepast gedrag toegevoegd aan een ARM-sjabloon (Azure Resource Manager) om de begininhoud in een opslagaccount voor een nieuwe toepassingsomgeving te faseereren. Hiermee is een specifiek probleem opgelost voor één toepassingsteam.
Een manier om implementatiescripts beter aanpasbaar te maken, is door gegevens aan het script te verstrekken. U hebt twee opties, opdrachtregelargumenten en omgevingsvariabelen.
Notitie
De opdrachten in deze les worden weergegeven om concepten te illustreren. Voer de opdrachten nog niet uit. U oefent wat u hier binnenkort leert.
Opdrachtregelargumenten gebruiken
De eerste optie voor het doorgeven van gegevens aan de deploymentScripts
resources is het aanpassen van de arguments
eigenschap. De arguments
eigenschap gebruikt een reeks argumenten, net zoals de argumenten die u opgeeft op de opdrachtregel. Deze argumenten worden verstrekt aan de command
eigenschap van de Azure-containerinstantie waarmee het script wordt uitgevoerd.
Notitie
Er wordt wat parseren uitgevoerd, dus test enkele variaties van uw arguments
eigenschap. Deze wordt onderverdeeld in een matrix met tekenreeksen op dezelfde manier als de Windows-shell opdrachtregels parseert.
"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'
}
Omgevingsvariabelen gebruiken
De tweede optie is het maken van omgevingsvariabelen waartoe uw scripts toegang hebben.
"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'
}
Een voordeel van het gebruik van omgevingsvariabelen is dat u de secureValue
optie kunt gebruiken voor geheimen die mogelijk moeten worden doorgegeven aan implementatiescripts.
"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'
}
Doorgegeven parameters
Zoals u hebt geleerd, kunt u parameterwaarden rechtstreeks instellen in de eigenschappen van het implementatiescript. Er zijn verschillende andere opties voor waarden die kunnen worden doorgegeven. U kunt dynamische waarden gebruiken die afkomstig zijn van eerder gemaakte resources, variabelen die in de sjabloon zijn gedeclareerd of parameters die rechtstreeks aan de sjabloon zijn doorgegeven tijdens de implementatie.
Deze scenario's zijn beschikbaar via sjabloonfuncties in de arguments
of environmentVariables
eigenschap. U kunt een van de ARM-sjabloonfuncties gebruiken om toegang te krijgen tot waarden en deze door te geven aan de sjabloon. Deze functies omvatten reference
, parameters
of variables
.
Deze scenario's zijn beschikbaar via sjabloonfuncties in de arguments
of environmentVariables
eigenschap. U kunt een van de Bicep-functies gebruiken om toegang te krijgen tot waarden en deze door te geven aan de sjabloon, zoals verwijzen naar eigenschappen van andere resources met behulp van hun symbolische namen en verwijzen naar parameters en variabelen.