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