Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come definire e usare le variabili nel file Bicep. Le variabili vengono usate per semplificare lo sviluppo di file Bicep. Anziché ripetere espressioni complesse in tutto il file Bicep, si definisce una variabile che contiene l'espressione complessa. Usare quindi tale variabile in base alle esigenze nel file Bicep.
Resource Manager risolve le variabili prima di avviare le operazioni di distribuzione. Ovunque la variabile venga usata nel file Bicep, Resource Manager la sostituisce con il valore risolto. Sono limitate a 512 variabili in un file Bicep. Per altre informazioni, vedere Limiti dei modelli.
Definire le variabili
Una variabile non può avere lo stesso nome di un parametro, un modulo o una risorsa. È possibile aggiungere uno o più decoratori per ogni variabile. Per ulteriori informazioni, vedere Utilizzare decoratori.
Variabili non tipate
Quando si definisce una variabile senza specificare un tipo di dati, il tipo viene dedotto dal valore . La sintassi per la definizione di una variabile non tipizzata è:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Nell'esempio seguente viene impostata una variabile su una stringa.
var stringVar = 'preset variable'
È possibile usare il valore di un parametro o di un'altra variabile durante la costruzione della variabile.
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
L'output dell'esempio precedente restituisce:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
È possibile usare le funzioni Bicep per costruire il valore della variabile. Nell'esempio seguente vengono usate le funzioni Bicep per creare un valore stringa per un nome di account di archiviazione.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
L'esempio precedente restituisce un valore simile all'output seguente:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Variabili tipate
A partire dalla versione 0.36.X dell'interfaccia della riga di comando di Bicep, Bicep supporta variabili tipate, in cui si dichiara in modo esplicito il tipo di dati di una variabile per garantire la sicurezza dei tipi e migliorare la chiarezza del codice. Vantaggi delle variabili tipate:
- Rilevamento degli errori: il compilatore Bicep verifica che i valori assegnati corrispondano al tipo dichiarato, rilevando gli errori in anticipo.
- Chiarezza del codice: i tipi espliciti rendono chiaro il tipo di dati che una variabile contiene.
- Supporto di IntelliSense: gli strumenti come Visual Studio Code offrono un migliore completamento automatico e convalida per le variabili tipate.
- Sicurezza di refactoring: assicura che le modifiche alle assegnazioni di variabili non interrompano inavvertitamente le aspettative dei tipi.
Per definire una variabile tipizzata, usare la var
parola chiave seguita dal nome della variabile, dal tipo e dal valore assegnato:
var <variable-name> <data-type> = <variable-value>
Gli esempi seguenti illustrano come definire le variabili tipate:
var resourceName string = 'myResource'
var instanceCount int = 3
var isProduction bool = true
var tags object = { environment: 'dev' }
var subnets array = ['subnet1', 'subnet2']
Per object
i tipi, è possibile definire uno schema per applicare una struttura specifica. Il compilatore garantisce che l'oggetto sia conforme allo schema definito.
var config {
name: string
count: int
enabled: bool
} = {
name: 'myApp'
count: 5
enabled: true
}
Nell'esempio seguente vengono utilizzate variabili tipizzate con decorators per applicare vincoli:
@description('The environment to deploy to')
@allowed(['dev', 'test', 'prod'])
param environment string = 'dev'
var instanceCount int = environment == 'prod' ? 5 : 2
var resourcePrefix string = 'app'
var tags {
environment: string
deployedBy: string
} = {
environment: environment
deployedBy: 'Bicep'
}
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: '${resourcePrefix}storage${instanceCount}'
location: 'westus'
tags: tags
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
In questo esempio:
-
instanceCount
viene tipizzato comeint
e usa un'espressione condizionale. -
resourcePrefix
è tipizzato comestring
. -
tags
viene tipizzato comeobject
con una struttura specifica.
Usare cicli iterativi
È possibile usare cicli iterativi durante la definizione di una variabile. Nell'esempio seguente viene creata una matrice di oggetti con tre proprietà.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
L'output restituisce una matrice con i valori seguenti:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Per altre informazioni sui tipi di cicli che è possibile usare con le variabili, vedere Cicli iterativi in Bicep.
Usare elementi Decorator
Gli elementi Decorator vengono scritti nel formato @expression
e vengono posizionati sopra le dichiarazioni di variabile. Nella tabella seguente vengono indicati gli elementi Decorator disponibili per le variabili.
Decoratore | Argomento | Descrizione |
---|---|---|
descrizione | stringa | Consente di fornire descrizioni per la variabile. |
esportazione | Nessuno | Indica che la variabile è disponibile per l'importazione da un altro file Bicep. |
I decorator si trovano nello spazio dei nomi sys. Se è necessario distinguere un decorator da un altro elemento con lo stesso nome, anteporre al decorator con sys
. Ad esempio, se il file Bicep include una variabile denominata description
, è necessario aggiungere lo spazio dei nomi sys quando si usa l'elemento Decorator description.
Descrizione
Per specificare una spiegazione, aggiungere un elemento description alla dichiarazione della variabile. Ad esempio:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Il testo in formato Markdown può essere usato come testo dell'elemento description.
Esportazione
Usare @export()
per condividere la variabile con altri file Bicep. Per altre informazioni, vedere Esportare variabili, tipi e funzioni.
Variabili di configurazione
È possibile definire variabili che includono i valori correlati per la configurazione di un ambiente. La variabile viene definita come oggetto con i valori. Nell'esempio seguente si illustra un oggetto che include i valori per due ambienti: test e prod. Specificare uno di questi valori durante la distribuzione.
@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
Passaggi successivi
- Per informazioni sulle proprietà disponibili per le variabili, vedere Informazioni sulla struttura e la sintassi dei file Bicep.
- Per informazioni sull'uso della sintassi del ciclo, vedere Cicli iterativi in Bicep.