Condividi tramite


Dichiarazione di risorsa in Bicep

Questo articolo descrive la sintassi usata per aggiungere una risorsa al file Bicep. È previsto un limite di 800 risorse in un file Bicep. Per altre informazioni, vedere Limiti dei modelli.

Dichiarazione

Aggiungere una dichiarazione di risorsa usando la parola chiave resource. Impostare un nome simbolico per la risorsa. Il nome simbolico non corrisponde al nome della risorsa. Si usa questo 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 distinguono tra maiuscole e minuscole. Possono contenere solo lettere, numeri e caratteri di sottolineatura (_). Non possono iniziare con un numero. Una risorsa non può avere lo stesso nome di un parametro, una risorsa o 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 una risorsa in modo condizionale, usare la sintassi if. 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 sintassi for. È possibile usare 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 sintassi for nelle proprietà delle risorse per creare un array.

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, è necessario impostare 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
  ...
}

Ufficio

Molte risorse richiedono una posizione. È possibile determinare se la risorsa necessita di una posizione tramite intellisense o informazioni di riferimento sul modello. Nell'esempio seguente viene aggiunto un parametro posizione che è 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 posizioni supportate per un servizio di Azure, vedere Prodotti disponibili in base all'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 dei modelli di ARM.

Identità gestite per le risorse di Azure

Alcune risorse supportano le identità gestite per le risorse di Azure. Tali risorse hanno un oggetto identità 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 del 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 della risorsa

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 informazioni di riferimento su 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