Parametryzowanie skryptów wdrażania
W poprzedniej lekcji dodano pewne zachowanie niestandardowe do szablonu usługi Azure Resource Manager (ARM) w celu przygotowania zawartości początkowej na koncie magazynu dla nowego środowiska aplikacji. Rozwiązało to konkretny problem dla jednego zespołu aplikacji.
Jednym ze sposobów zwiększenia możliwości dostosowania skryptów wdrażania jest dostarczenie danych do skryptu. Dostępne są dwie opcje, argumenty wiersza polecenia i zmienne środowiskowe.
Uwaga
Polecenia w tej lekcji są wyświetlane w celu zilustrowania pojęć. Nie uruchamiaj jeszcze poleceń. Będziesz ćwiczyć to, czego nauczysz się tutaj wkrótce.
Używanie argumentów wiersza polecenia
Pierwszą opcją przekazywania danych do deploymentScripts
zasobów jest dostosowanie arguments
właściwości. Właściwość arguments
przyjmuje ciąg argumentów, podobnie jak te, które należy podać w wierszu polecenia. Te argumenty są dostarczane do command
właściwości wystąpienia kontenera platformy Azure, które uruchomi skrypt.
Uwaga
Niektóre analizy występują, więc przetestuj niektóre odmiany właściwości arguments
. Zostanie ona podzielona na tablicę ciągów w taki sam sposób, w jaki powłoka systemu Windows analizuje wiersze polecenia.
"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'
}
Korzystanie ze zmiennych środowiskowych
Drugą opcją jest utworzenie zmiennych środowiskowych, do których skrypty mogą uzyskiwać dostęp.
"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'
}
Jedną z zalet używania zmiennych środowiskowych jest możliwość użycia secureValue
opcji dla wpisów tajnych, które mogą wymagać przekazania do skryptów wdrażania.
"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'
}
Przekazywanie parametrów
Jak już wiesz, możesz ustawić wartości parametrów bezpośrednio we właściwościach skryptu wdrażania. Istnieje kilka innych opcji dla wartości, które można przekazać. Możesz użyć wartości dynamicznych pochodzących z wcześniej utworzonych zasobów, zmiennych zadeklarowanych w szablonie lub parametrów przekazywanych bezpośrednio do szablonu w czasie wdrażania.
Te scenariusze są dostępne za pośrednictwem funkcji szablonu arguments
we właściwości lub environmentVariables
. Aby uzyskać dostęp do wartości i przekazać je do szablonu, możesz użyć dowolnej funkcji szablonu usługi ARM. Te funkcje obejmują reference
, parameters
lub variables
.
Te scenariusze są dostępne za pośrednictwem funkcji szablonu arguments
we właściwości lub environmentVariables
. Do uzyskiwania dostępu do wartości i przekazywania ich do szablonu można użyć dowolnych funkcji Bicep, takich jak odwoływanie się do właściwości z innych zasobów przy użyciu ich nazw symbolicznych i odwoływanie się do parametrów i zmiennych.