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
- Zie Voorwaardelijke implementatie in Bicep als u een resource voorwaardelijk wilt implementeren.
- Zie Bestaande resources in Bicep als u wilt verwijzen naar een bestaande resource.
- Zie Resourceafhankelijkheden in Bicep voor meer informatie over hoe de implementatievolgorde wordt bepaald.