Dichiarazione di risorsa in Bicep
Questo articolo descrive la sintassi usata per aggiungere una risorsa al file Bicep. Sono limitate a 800 risorse in un file Bicep. Per altre informazioni, vedere Limiti dei modelli.
Dichiarazione
Aggiungere una dichiarazione di risorsa usando la resource
parola chiave . Si imposta un nome simbolico per la risorsa. Il nome simbolico non corrisponde al nome della risorsa. Usare il nome simbolico per fare riferimento alla risorsa in altre parti del file Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Pertanto, una dichiarazione per un account di archiviazione può iniziare con:
resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
...
}
I nomi simbolici fanno distinzione tra maiuscole e minuscole. Possono contenere lettere, numeri e caratteri di sottolineatura (_
). Non possono iniziare con un numero. Una risorsa non può avere lo stesso nome di un parametro, di una variabile o di un modulo.
Per i tipi di risorse e la versione disponibili, vedere Informazioni di riferimento sulle risorse Bicep. Bicep non supporta apiProfile
, disponibile in JSON dei modelli di Azure Resource Manager (modelli arm). È anche possibile definire le risorse del provider di estendibilità Bicep. Per altre informazioni, vedere Provider Kubernetes di estendibilità Bicep.
Per distribuire in modo condizionale una risorsa, usare la if
sintassi . Per altre informazioni, vedere Distribuzione condizionale in Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Per distribuire più istanze di una risorsa, usare la for
sintassi . È possibile usare l'elemento batchSize
Decorator per specificare se le istanze vengono distribuite in modo seriale o in parallelo. Per altre informazioni, vedere Cicli iterativi in Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
È anche possibile usare la for
sintassi nelle proprietà della risorsa per creare una matrice.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Nome risorsa
Ogni risorsa ha un nome. Quando si imposta il nome della risorsa, prestare attenzione alle regole e alle restrizioni per i nomi delle risorse.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
...
}
In genere, si imposta il nome su un parametro in modo da poter passare valori diversi durante la distribuzione.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageAccountName
...
}
Posizione
Molte risorse richiedono una posizione. È possibile determinare se la risorsa necessita di una posizione tramite intellisense o riferimento al modello. Nell'esempio seguente viene aggiunto un parametro location usato per l'account di archiviazione.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
In genere, si imposta la posizione su un parametro in modo che sia possibile eseguire la distribuzione in posizioni diverse.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: location
...
}
Diversi tipi di risorse sono supportati in posizioni diverse. Per ottenere le località supportate per un servizio di Azure, vedere Prodotti disponibili per area. Per ottenere i percorsi supportati per un tipo di risorsa, usare Azure PowerShell o l'interfaccia della riga di comando di Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Tag
È possibile applicare tag a una risorsa durante la distribuzione. I tag consentono di organizzare in modo logico le risorse distribuite. Per esempi dei diversi modi in cui è possibile specificare i tag, vedere Tag del modello di Resource Manager.
Identità gestite per le risorse di Azure
Alcune risorse supportano le identità gestite per le risorse di Azure. Tali risorse hanno un oggetto Identity a livello radice della dichiarazione di risorsa.
È possibile usare identità assegnate dal sistema o assegnate dall'utente.
L'esempio seguente illustra come configurare un'identità assegnata dal sistema per un cluster servizio Azure Kubernetes.
resource aks 'Microsoft.ContainerService/managedClusters@2020-09-01' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
L'esempio seguente illustra come configurare un'identità assegnata dall'utente per una macchina virtuale.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Proprietà specifiche delle risorse
Le proprietà precedenti sono generiche per la maggior parte dei tipi di risorse. Dopo aver impostato questi valori, è necessario impostare le proprietà specifiche del tipo di risorsa che si sta distribuendo.
Usare intellisense o riferimento alle risorse Bicep per determinare quali proprietà sono disponibili e quali sono necessarie. Nell'esempio seguente vengono impostate le proprietà rimanenti per un account di archiviazione.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Passaggi successivi
- Per distribuire in modo condizionale una risorsa, vedere Distribuzione condizionale in Bicep.
- Per fare riferimento a una risorsa esistente, vedere Risorse esistenti in Bicep.
- Per informazioni su come viene determinato l'ordine di distribuzione, vedere Dipendenze delle risorse in Bicep.