Delen via


Resourcedeclaratie in Bicep

In dit artikel worden 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.

Resources definiëren

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 uw Bicep-bestand.

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

Een declaratie voor een opslagaccount kan dus beginnen met:

resource stg 'Microsoft.Storage/storageAccounts@2023-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 apiProfilevoor JSON voor Azure Resource Manager-sjablonen (ARM-sjablonen). U kunt ook resources van bicep-uitbreidbaarheidsproviders definiëren. Zie Bicep extensibility Kubernetes-provider voor meer informatie.

Als u een resource voorwaardelijk wilt implementeren, gebruikt u de if syntaxis. 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 van 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>]
  }
}

Decorators gebruiken

Decorators worden geschreven in de indeling @expression en worden boven resourcedeclaraties geplaatst. In de volgende tabel ziet u de beschikbare decorators voor resources.

Decorateur Argument Beschrijving
batchSize Geen Stel exemplaren in om sequentieel te implementeren.
beschrijving tekenreeks Geef beschrijvingen op voor de resource.

Decorators bevinden zich in de sys-naamruimte. Als u een decorator wilt onderscheiden van een ander item met dezelfde naam, moet u de decorator vooraf laten gaan door sys. Als uw Bicep-bestand bijvoorbeeld een parameter met de naam descriptionbevat, moet u de sys-naamruimte toevoegen wanneer u de beschrijvings decorator gebruikt.

BatchSize

U kunt alleen van toepassing zijn op @batchSize() een resource- of moduledefinitie die gebruikmaakt van een for expressie.

Resources worden standaard parallel geïmplementeerd. Wanneer u de batchSize(int) decorator toevoegt, implementeert u exemplaren serieel.

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Zie Implementeren in batches voor meer informatie.

Beschrijving

Als u uitleg wilt toevoegen, voegt u een beschrijving toe aan resourcedeclaraties. Voorbeeld:

@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Markdown-opgemaakte tekst kan worden gebruikt voor de beschrijvingstekst.

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@2023-04-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@2023-04-01' = {
  name: storageAccountName
  ...
}

Resourcelocatie

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

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

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

param location string = resourceGroup().location

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

Verschillende resourcetypen worden op verschillende locaties ondersteund. Zie producten die beschikbaar zijn 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

Resourcetags

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

Beheerde identiteiten voor 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@2024-02-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

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

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2024-03-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 zijn vereist. In het volgende voorbeeld worden de resterende eigenschappen voor een opslagaccount ingesteld.

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

Volgende stappen