Variables de Bicep
En este artículo se describe cómo definir y usar variables en el archivo de Bicep. Las variables se usan para simplificar el desarrollo de archivos de Bicep. En lugar de repetir expresiones complicadas en todo el archivo de Bicep, defina una variable que contenga la expresión complicada. A continuación, use esa variable en todo el archivo de Bicep tanto como sea necesario.
Resource Manager resuelve las variables antes de iniciar las operaciones de implementación. Siempre que la variable se use en el archivo de Bicep, Resource Manager la reemplaza por el valor resuelto.
Está limitado a 512 variables en un archivo de Bicep. Para obtener más información, consulte Límites de plantilla.
Definición de variables
La sintaxis para definir una variable es:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Una variable no puede tener el mismo nombre que un parámetro, módulo o recurso.
Al definir una variable, no se especifica un tipo de datos para ella. El tipo se deduce del valor. En el siguiente ejemplo se establece una variable en una cadena.
var stringVar = 'example value'
Puede usar el valor de un parámetro u otra variable al construir la variable.
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
El ejemplo anterior devuelve:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Puede usar las funciones de Bicep para construir el valor de la variable. En el ejemplo siguiente se usan funciones de Bicep para crear un valor de cadena para un nombre de cuenta de almacenamiento.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
En el ejemplo anterior se devuelve un valor como el siguiente:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Puede usar bucles iterativos al definir una variable. En el ejemplo siguiente se crea una matriz de objetos con tres propiedades.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
La salida devuelve una matriz con los valores siguientes:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Para más información sobre los tipos de bucles que puede usar con variables, consulte Bucles iterativos en Bicep.
Uso de decoradores
Los decoradores se escriben en el formato @expression
y se colocan encima de las declaraciones de variable. En la siguiente tabla se muestran los decoradores disponibles para las variables.
Decorador | Argumento | Descripción |
---|---|---|
descripción | string | Proporcione descripciones para la variable. |
export | None | Indica que la variable está disponible para la importación por otro archivo de Bicep. |
Los decoradores están en el espacio de nombres sys. Si tiene que diferenciar un decorador de otro elemento con el mismo nombre, anteceda el decorador con sys
. Por ejemplo, si el archivo de Bicep incluye una variable llamada description
, debe agregar el espacio de nombres sys al usar el decorador description.
Descripción
Para agregar una explicación, agregue una descripción a las declaraciones de variables. Por ejemplo:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
El texto con formato Markdown se puede usar para el texto de descripción.
Exportación
Use @export()
para compartir la variable con otros archivos de Bicep. Para más información, consulte Exportación de variables, tipos y funciones.
Uso de variables
En el ejemplo siguiente se muestra cómo usar la variable para una propiedad de recurso. Se hace referencia al valor de la variable al proporcionar el nombre de la variable: 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
Dado que los nombres de cuenta de almacenamiento deben usar letras minúsculas, la variable storageName
usa la función toLower
para convertir el valor storageNamePrefix
en minúsculas. La función uniqueString
crea un valor único a partir del identificador del grupo de recursos. Los valores se concatenan a una cadena.
Variables de configuración
Puede definir variables que contengan valores relacionados para configurar un entorno. La variable se define como un objeto con los valores. En el ejemplo siguiente se muestra un objeto que contiene valores para dos entornos: test y prod. Pase uno de estos valores durante la implementación.
@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
Pasos siguientes
- Para más información sobre las propiedades disponibles para variables, consulte Nociones sobre la estructura y la sintaxis de los archivos de Bicep.
- Para información sobre el uso de la sintaxis de bucle, consulte Bucles iterativos en Bicep.