Parametrizar scripts de implantação
Na unidade anterior, você adicionou um comportamento personalizado a um modelo do ARM (Azure Resource Manager) para preparar o conteúdo inicial em uma conta de armazenamento para um novo ambiente de aplicativo. Essa solução resolveu um problema específico para uma equipe de aplicativos.
Uma forma de tornar os scripts de implantação mais adaptáveis é fornecer dados para o script. Você tem duas opções, argumentos de linha de comando e variáveis de ambiente.
Observação
Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você praticará o que aprendeu aqui em breve.
Como usar argumentos de linha de comando
A primeira opção para passar dados para os recursos deploymentScripts é personalizar a propriedade arguments. A propriedade arguments usa uma cadeia de caracteres de argumentos assim como as que você forneceria na linha de comando. Esses argumentos são fornecidos para a command propriedade da instância de contêiner do Azure que executa o script.
Observação
Algumas análises acontecem, portanto, teste algumas variações de sua propriedade arguments. O valor da propriedade é dividido em uma matriz de cadeias de caracteres da mesma forma que o shell do Windows analisa as linhas de comando.
"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'
}
Usando variáveis de ambiente
Sua segunda opção é criar variáveis de ambiente que seus scripts possam acessar.
"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'
}
Um benefício de usar variáveis de ambiente é que você pode usar a opção secureValue para segredos que talvez precisem ser transmitidos para scripts de implantação.
"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'
}
Como passar parâmetros
Como você aprendeu, você pode definir valores de parâmetro diretamente nas propriedades do script de implantação. Há várias outras opções para valores que podem ser passados. Você pode usar valores dinâmicos provenientes de recursos criados anteriormente, variáveis declaradas no modelo ou parâmetros passados diretamente para o modelo no momento da implantação.
Esses cenários estão disponíveis por meio de funções de modelo na propriedade arguments ou environmentVariables. Você pode usar qualquer uma das funções de modelo do ARM para acessar valores e passá-los para o modelo. Essas funções incluem reference, parameters ou variables.
Esses cenários estão disponíveis por meio de funções de modelo na propriedade arguments ou environmentVariables. Você pode usar qualquer um dos recursos do Bicep para acessar valores e passá-los para o modelo. Por exemplo, você pode consultar propriedades de outros recursos usando seus nomes simbólicos e fazer referência a parâmetros e variáveis.