Implantações de grupos de recursos com arquivos Bicep
Este artigo descreve como definir o escopo com o Bicep ao implantar em um grupo de recursos.
Recursos suportados
A maioria dos recursos pode ser implantada em um grupo de recursos. Para obter uma lista de recursos disponíveis, consulte Referência de modelo ARM.
Definir âmbito
Por padrão, um arquivo Bicep tem como escopo o grupo de recursos. Se você quiser definir explicitamente o escopo, use:
targetScope = 'resourceGroup'
Mas, definir o escopo de destino para o grupo de recursos é desnecessário porque esse escopo é usado por padrão.
Comandos de implantação
Para implantar em um grupo de recursos, use os comandos de implantação do grupo de recursos.
Para a CLI do Azure, use az deployment group create. O exemplo a seguir implanta um modelo para criar um grupo de recursos. O grupo de recursos especificado no --resource-group
parâmetro é o grupo de recursos de destino.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Para obter informações mais detalhadas sobre comandos de implantação e opções para implantar modelos ARM, consulte:
- Implantar recursos com modelos ARM e CLI do Azure
- Implantar recursos com modelos ARM e Azure PowerShell
- Implantar modelos ARM a partir do Cloud Shell
Escopos de implantação
Ao implantar em um grupo de recursos, você pode implantar recursos para:
- O grupo de recursos de destino para a operação de implantação
- outros grupos de recursos na mesma subscrição ou noutras subscrições
- qualquer subscrição no inquilino
- O locatário do grupo de recursos
Um recurso de extensão pode ter o escopo definido para um destino diferente do destino de implantação.
O usuário que implanta o modelo deve ter acesso ao escopo especificado.
Esta seção mostra como especificar escopos diferentes. Você pode combinar esses diferentes escopos em um único modelo.
Âmbito do grupo de recursos de destino
Para implantar recursos no grupo de recursos de destino, adicione esses recursos ao arquivo Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Para obter um modelo de exemplo, consulte Implantar no grupo de recursos de destino.
Escopo para grupo de recursos diferente
Para implantar recursos em um grupo de recursos que não seja o grupo de recursos de destino, adicione um módulo. Use a função resourceGroup para definir a scope
propriedade para esse módulo.
Se o grupo de recursos estiver em uma assinatura diferente, forneça a ID da assinatura e o nome do grupo de recursos. Se o grupo de recursos estiver na mesma assinatura que a implantação atual, forneça apenas o nome do grupo de recursos. Se você não especificar uma assinatura na função resourceGroup, a assinatura atual será usada.
O exemplo a seguir mostra um módulo direcionado a um grupo de recursos em uma assinatura diferente.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
O próximo exemplo mostra um módulo destinado a um grupo de recursos na mesma assinatura.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Para obter um modelo de exemplo, consulte Implantar em vários grupos de recursos.
Âmbito da subscrição
Para implantar recursos em uma assinatura, adicione um módulo. Use a função de assinatura para definir sua scope
propriedade.
Para implantar na assinatura atual, use a função de assinatura sem um parâmetro.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Para implantar em uma assinatura diferente, especifique essa ID de assinatura como um parâmetro na função de assinatura.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Para obter um modelo de exemplo, consulte Criar grupo de recursos com o Bicep.
Âmbito de aplicação para o inquilino
Para criar recursos no locatário, adicione um módulo. Use a função tenant para definir sua scope
propriedade.
O usuário que implanta o modelo deve ter o acesso necessário para implantar no locatário.
O exemplo a seguir inclui um módulo que é implantado para o locatário.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Em vez de usar um módulo, você pode definir o escopo para tenant()
alguns tipos de recursos. O exemplo a seguir implanta um grupo de gerenciamento no locatário.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Para obter mais informações, consulte Grupo de gerenciamento.
Implantar no grupo de recursos de destino
Para implantar recursos no grupo de recursos de destino, defina esses recursos na resources
seção do modelo. O modelo a seguir cria uma conta de armazenamento no grupo de recursos especificado na operação de implantação.
@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@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Implantar em vários grupos de recursos
Você pode implantar em mais de um grupo de recursos em um único arquivo Bicep.
Nota
Você pode implantar em 800 grupos de recursos em uma única implantação. Normalmente, essa limitação significa que você pode implantar em um grupo de recursos especificado para o modelo pai e até 799 grupos de recursos em implantações aninhadas ou vinculadas. No entanto, se o modelo pai contiver apenas modelos aninhados ou vinculados e não implantar recursos por si só, você poderá incluir até 800 grupos de recursos em implantações aninhadas ou vinculadas.
O exemplo a seguir implanta duas contas de armazenamento. A primeira conta de armazenamento é implantada no grupo de recursos especificado na operação de implantação. A segunda conta de armazenamento é implantada no grupo de recursos especificado nos secondResourceGroup
parâmetros e 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
}
}
Ambos os módulos usam o mesmo arquivo Bicep chamado storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Criar grupo de recursos
Para obter informações sobre como criar grupos de recursos, consulte Criar grupo de recursos com o Bicep.
Próximos passos
Para saber mais sobre outros escopos, consulte: