Variáveis no Bicep
Este artigo descreve como definir e utilizar variáveis no seu ficheiro Bicep. Utiliza variáveis para simplificar o desenvolvimento de ficheiros do Bicep. Em vez de repetir expressões complicadas em todo o ficheiro Bicep, define uma variável que contém a expressão complicada. Em seguida, utilize essa variável conforme necessário em todo o seu ficheiro Bicep.
Resource Manager resolve as variáveis antes de iniciar as operações de implementação. Onde quer que a variável seja utilizada no ficheiro Bicep, Resource Manager substitui-a pelo valor resolvido.
Está limitado a 256 variáveis num ficheiro Bicep. Para obter mais informações, veja Limites de modelos.
Definir variável
A sintaxe para definir uma variável é:
var <variable-name> = <variable-value>
Uma variável não pode ter o mesmo nome que um parâmetro, módulo ou recurso.
Repare que não especifica um tipo de dados para a variável. O tipo é inferido a partir do valor. O exemplo seguinte define uma variável para uma cadeia.
var stringVar = 'example value'
Pode utilizar o valor de um parâmetro ou de outra variável ao construir a variável.
param inputValue string = 'deployment parameter'
var stringVar = 'preset variable'
var concatToVar = '${stringVar}AddToVar'
var concatToParam = '${inputValue}AddToParam'
output addToVar string = concatToVar
output addToParam string = concatToParam
O exemplo anterior devolve:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Pode utilizar as funções bicep para construir o valor da variável. O exemplo seguinte utiliza as funções bicep para criar um valor de cadeia para um nome de conta de armazenamento.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
O exemplo anterior devolve um valor semelhante ao seguinte:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Pode utilizar ciclos iterativos ao definir uma variável. O exemplo seguinte cria uma matriz de objetos com três propriedades.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
O resultado devolve uma matriz com os seguintes valores:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Para obter mais informações sobre os tipos de ciclos que pode utilizar com variáveis, veja Ciclos iterativos no Bicep.
Utilizar variável
O exemplo seguinte mostra como utilizar a variável para uma propriedade de recurso. Faz referência ao valor da variável ao indicar o nome da variável: storageName
.
param rgLocation string
param storageNamePrefix string = 'STG'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
resource demoAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: storageName
location: rgLocation
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output stgOutput string = storageName
Uma vez que os nomes das contas de armazenamento têm de utilizar letras minúsculas, a storageName
variável utiliza a toLower
função para tornar o storageNamePrefix
valor em minúsculas. A uniqueString
função cria um valor exclusivo a partir do ID do grupo de recursos. Os valores são concatenados a uma cadeia.
Variáveis de configuração
Pode definir variáveis que contêm valores relacionados para configurar um ambiente. Define a variável como um objeto com os valores. O exemplo seguinte mostra um objeto que contém valores para dois ambientes : teste e prod. Transmita um destes valores durante a implementação.
@allowed([
'test'
'prod'
])
param environmentName string
var environmentSettings = {
test: {
instanceSize: 'Small'
instanceCount: 1
}
prod: {
instanceSize: 'Large'
instanceCount: 4
}
}
output instanceSize string = environmentSettings[environmentName].instanceSize
output instanceCount int = environmentSettings[environmentName].instanceCount
Passos seguintes
- Para saber mais sobre as propriedades disponíveis para variáveis, veja Compreender a estrutura e a sintaxe dos ficheiros bicep.
- Para saber mais sobre como utilizar a sintaxe do ciclo, veja Ciclos iterativos no Bicep.