Resourcedeclaratie in Bicep

In dit artikel wordt de syntaxis beschreven die u gebruikt om een resource toe te voegen aan uw Bicep-bestand. U bent beperkt tot 800 resources in een Bicep-bestand. Zie Sjabloonlimieten voor meer informatie.

Verklaring

Voeg een resourcedeclaratie toe met behulp van het resource trefwoord. U stelt een symbolische naam in voor de resource. De symbolische naam is niet hetzelfde als de resourcenaam. U gebruikt de symbolische naam om te verwijzen naar de resource in andere delen van het Bicep-bestand.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Een declaratie voor een opslagaccount kan dus beginnen met:

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  ...
}

Symbolische namen zijn hoofdlettergevoelig. Ze kunnen letters, cijfers en onderstrepingstekens (_) bevatten. Ze kunnen niet beginnen met een getal. Een resource kan niet dezelfde naam hebben als een parameter, variabele of module.

Zie Bicep-resourcereferentie voor de beschikbare resourcetypen en -versie. Bicep biedt geen ondersteuning voor apiProfile, wat beschikbaar is in Azure Resource Manager-sjablonen (ARM-sjablonen) JSON. U kunt ook resources van bicep-uitbreidbaarheidsproviders definiëren. Zie Bicep-uitbreidbaarheid Kubernetes-provider voor meer informatie.

Gebruik de if syntaxis om een resource voorwaardelijk te implementeren. Zie Voorwaardelijke implementatie in Bicep voor meer informatie.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

Als u meer dan één exemplaar van een resource wilt implementeren, gebruikt u de for syntaxis. U kunt de batchSize decorator gebruiken om op te geven of de exemplaren serieel of parallel worden geïmplementeerd. Zie Iteratieve lussen in Bicep voor meer informatie.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

U kunt ook de for syntaxis voor de resource-eigenschappen gebruiken om een matrix te maken.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Resourcenaam

Elke resource heeft een naam. Let bij het instellen van de resourcenaam op de regels en beperkingen voor resourcenamen.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  ...
}

Normaal gesproken stelt u de naam in op een parameter, zodat u tijdens de implementatie verschillende waarden kunt doorgeven.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageAccountName
  ...
}

Locatie

Voor veel resources is een locatie vereist. U kunt bepalen of de resource een locatie nodig heeft via intelliSense of sjabloonreferentie. In het volgende voorbeeld wordt een locatieparameter toegevoegd die wordt gebruikt voor het opslagaccount.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Normaal gesproken stelt u de locatie in op een parameter, zodat u op verschillende locaties kunt implementeren.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: location
  ...
}

Verschillende resourcetypen worden ondersteund op verschillende locaties. Zie Beschikbare producten per regio om de ondersteunde locaties voor een Azure-service op te halen. Gebruik Azure PowerShell of Azure CLI om de ondersteunde locaties voor een resourcetype op te halen.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Tags

U kunt tags toepassen op een resource tijdens de implementatie. Tags helpen u uw geïmplementeerde resources logisch te organiseren. Zie ARM-sjabloontags voor voorbeelden van de verschillende manieren waarop u de tags kunt opgeven.

Beheerde identiteiten voor Azure-resources

Sommige resources ondersteunen beheerde identiteiten voor Azure-resources. Deze resources hebben een identiteitsobject op het hoofdniveau van de resourcedeclaratie.

U kunt door het systeem toegewezen of door de gebruiker toegewezen identiteiten gebruiken.

In het volgende voorbeeld ziet u hoe u een door het systeem toegewezen identiteit configureert voor een Azure Kubernetes Service cluster.

resource aks 'Microsoft.ContainerService/managedClusters@2020-09-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

In het volgende voorbeeld ziet u hoe u een door de gebruiker toegewezen identiteit configureert voor een virtuele machine.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Resourcespecifieke eigenschappen

De voorgaande eigenschappen zijn algemeen voor de meeste resourcetypen. Nadat u deze waarden hebt ingesteld, moet u de eigenschappen instellen die specifiek zijn voor het resourcetype dat u implementeert.

Gebruik intellisense- of Bicep-resourcereferenties om te bepalen welke eigenschappen beschikbaar zijn en welke vereist zijn. In het volgende voorbeeld worden de resterende eigenschappen voor een opslagaccount ingesteld.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Volgende stappen