Variáveis no Bicep
Este artigo descreve como definir e usar variáveis no seu arquivo Bicep. Você usa variáveis para simplificar o desenvolvimento de arquivos Bicep. Em vez de repetir expressões complicadas em todo o arquivo Bicep, defina uma variável que contenha a expressão complicada. Em seguida, use essa variável conforme necessário em todo o arquivo Bicep.
O Resource Manager resolverá as variáveis antes de iniciar as operações de implantação. Sempre que a variável é usada no arquivo Bicep, o Resource Manager a substitui pelo valor resolvido.
Você está limitado a 512 variáveis em um arquivo Bicep. Para obter mais informações, confira Limites de modelo.
Definir variáveis
A sintaxe para definir uma variável é:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Uma variável não pode ter o mesmo nome que um parâmetro, módulo ou recurso.
Observe que não é necessário especificar um tipo de dados na variável. O tipo é inferido pelo valor. O exemplo a seguir define uma variável como uma cadeia de caracteres.
var stringVar = 'example value'
Você pode usar o valor de um parâmetro ou 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 retorna:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Você pode usar funções do Bicep para construir o valor da variável. O exemplo a seguir usa funções Bicep para criar um valor de cadeia de caracteres 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 retorna um valor como o seguinte:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
É possível usar loops iterativos ao definir uma variável. O exemplo a seguir 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
A saída retorna uma matriz com os seguintes elementos:
[
{
"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 loops que podem ser usados com variáveis, consulte Loops iterativos em Bicep.
Use decoradores
Os decoradores são escritos no formato @expression
e são colocados acima das declarações de variáveis. A tabela a seguir mostra os decoradores disponíveis para variáveis.
Decorador | Argument | Descrição |
---|---|---|
descrição | string | Fornece descrições para a variável. |
exportar | nenhum | Indica que a variável está disponível para importação por outro arquivo Bicep. |
Os decoradores estão no namespace sys. Se você precisar diferenciar um decorador de outro item com o mesmo nome, preceda o decorador com sys
. Por exemplo, se o arquivo Bicep incluir uma variável chamada description
, você precisará adicionar o namespace sys ao usar o decorador description.
Descrição
Para adicionar uma explicação, adicione uma descrição à declaração da variável. Por exemplo:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
O texto formatado em Markdown pode ser usado para o texto da descrição.
Export
Use @export()
para compartilhar a variável com outros arquivos do Bicep. Para obter mais informações, consulte Exportar variáveis, tipos e funções.
Usar variáveis
O exemplo a seguir mostra como usar a variável para uma propriedade de recurso. Você faz referência ao valor da variável fornecendo 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@2023-04-01' = {
name: storageName
location: rgLocation
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output stgOutput string = storageName
Como os nomes de conta de armazenamento devem usar letras minúsculas, a variável storageName
usa a função toLower
para tornar o valor storageNamePrefix
em minúsculas. A função uniqueString
cria um valor exclusivo da ID do grupo de recursos. Os valores são concatenados a uma cadeia de caracteres.
Variáveis de configuração
Você pode definir variáveis que mantêm valores relacionados para configurar um ambiente. Defina a variável como um objeto com os valores. O exemplo a seguir mostra um objeto que contém valores para dois ambientes - test e prod. Passe em um desses valores durante a implantaçã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
Próximas etapas
- Para saber mais sobre as propriedades disponíveis para variáveis, veja Entender a estrutura e a sintaxe de arquivos Bicep.
- Para aprender a usar a sintaxe de loop, consulte Loops iterativos em Bicep.