Resourcegroepimplementaties met Bicep-bestanden
In dit artikel wordt beschreven hoe u het bereik instelt met Bicep bij het implementeren in een resourcegroep.
Ondersteunde resources
De meeste resources kunnen worden geïmplementeerd in een resourcegroep. Zie ARM-sjabloonreferentie voor een lijst met beschikbare resources.
Bereik instellen
Standaard is het bereik van een Bicep-bestand ingesteld op de resourcegroep. Als u het bereik expliciet wilt instellen, gebruikt u:
targetScope = 'resourceGroup'
Maar het instellen van het doelbereik op resourcegroep is niet nodig, omdat dat bereik standaard wordt gebruikt.
Implementatieopdrachten
Als u wilt implementeren in een resourcegroep, gebruikt u de implementatieopdrachten van de resourcegroep.
Gebruik az deployment group create voor Azure CLI. In het volgende voorbeeld wordt een sjabloon geïmplementeerd om een resourcegroep te maken. De resourcegroep die u opgeeft in de --resource-group
parameter is de doelresourcegroep.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Zie voor meer gedetailleerde informatie over implementatieopdrachten en opties voor het implementeren van ARM-sjablonen:
- Resources implementeren met ARM-sjablonen en Azure CLI
- Resources implementeren met ARM-sjablonen en Azure PowerShell
- ARM-sjablonen implementeren vanuit Cloud Shell
Implementatiebereiken
Wanneer u implementeert in een resourcegroep, kunt u resources implementeren voor:
- de doelresourcegroep voor de implementatiebewerking
- andere resourcegroepen in hetzelfde abonnement of andere abonnementen
- een abonnement in de tenant
- de tenant voor de resourcegroep
Een extensieresource kan worden gericht op een doel dat verschilt van het implementatiedoel.
De gebruiker die de sjabloon implementeert, moet toegang hebben tot het opgegeven bereik.
In deze sectie wordt beschreven hoe u verschillende bereiken opgeeft. U kunt deze verschillende bereiken combineren in één sjabloon.
Bereik voor doelresourcegroep
Als u resources wilt implementeren in de doelresourcegroep, voegt u deze resources toe aan het Bicep-bestand.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2019-06-01' = {
...
}
Zie Implementeren naar doelresourcegroep voor een voorbeeldsjabloon.
Bereik voor een andere resourcegroep
Als u resources wilt implementeren in een resourcegroep die niet de doelresourcegroep is, voegt u een module toe. Gebruik de functie resourceGroup om de scope
eigenschap voor die module in te stellen.
Als de resourcegroep zich in een ander abonnement bevindt, geeft u de abonnements-id en de naam van de resourcegroep op. Als de resourcegroep zich in hetzelfde abonnement bevindt als de huidige implementatie, geeft u alleen de naam van de resourcegroep op. Als u geen abonnement opgeeft in de functie resourceGroup, wordt het huidige abonnement gebruikt.
In het volgende voorbeeld ziet u een module die is gericht op een resourcegroep in een ander abonnement.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
In het volgende voorbeeld ziet u een module die is gericht op een resourcegroep in hetzelfde abonnement.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Zie Implementeren in meerdere resourcegroepen voor een voorbeeldsjabloon.
Bereik voor abonnement
Als u resources wilt implementeren in een abonnement, voegt u een module toe. Gebruik de abonnementsfunctie om de eigenschap ervan scope
in te stellen.
Als u wilt implementeren in het huidige abonnement, gebruikt u de abonnementsfunctie zonder parameter.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Als u wilt implementeren in een ander abonnement, geeft u die abonnements-id op als een parameter in de abonnementsfunctie.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Zie Resourcegroep maken met Bicep voor een voorbeeldsjabloon.
Bereik naar tenant
Als u resources in de tenant wilt maken, voegt u een module toe. Gebruik de tenantfunctie om de eigenschap ervan scope
in te stellen.
De gebruiker die de sjabloon implementeert, moet de vereiste toegang hebben om te implementeren in de tenant.
Het volgende voorbeeld bevat een module die is geïmplementeerd in de tenant.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
In plaats van een module te gebruiken, kunt u het bereik tenant()
instellen op voor bepaalde resourcetypen. In het volgende voorbeeld wordt een beheergroep geïmplementeerd in de tenant.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Zie Beheergroep voor meer informatie.
Implementeren naar doelresourcegroep
Als u resources in de doelresourcegroep wilt implementeren, definieert u deze resources in de resources
sectie van de sjabloon. Met de volgende sjabloon maakt u een opslagaccount in de resourcegroep die is opgegeven in de implementatiebewerking.
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Implementeren in meerdere resourcegroepen
U kunt implementeren in meer dan één resourcegroep in één Bicep-bestand.
Notitie
U kunt implementeren in 800 resourcegroepen in één implementatie. Deze beperking betekent doorgaans dat u kunt implementeren in één resourcegroep die is opgegeven voor de bovenliggende sjabloon en maximaal 799 resourcegroepen in geneste of gekoppelde implementaties. Als uw bovenliggende sjabloon echter alleen geneste of gekoppelde sjablonen bevat en zelf geen resources implementeert, kunt u maximaal 800 resourcegroepen opnemen in geneste of gekoppelde implementaties.
In het volgende voorbeeld worden twee opslagaccounts geïmplementeerd. Het eerste opslagaccount wordt geïmplementeerd in de resourcegroep die is opgegeven in de implementatiebewerking. Het tweede opslagaccount wordt geïmplementeerd in de resourcegroep die is opgegeven in de secondResourceGroup
parameters en secondSubscriptionID
:
@maxLength(11)
param storagePrefix string
param firstStorageLocation string = resourceGroup().location
param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string
var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'
module firstStorageAcct 'storage.bicep' = {
name: 'storageModule1'
params: {
storageLocation: firstStorageLocation
storageName: firstStorageName
}
}
module secondStorageAcct 'storage.bicep' = {
name: 'storageModule2'
scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
params: {
storageLocation: secondStorageLocation
storageName: secondStorageName
}
}
Beide modules gebruiken hetzelfde Bicep-bestand met de naam storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Een resourcegroep maken
Zie Resourcegroep maken met Bicep voor informatie over het maken van resourcegroepen.
Volgende stappen
Zie voor meer informatie over andere bereiken: