Partilhar via


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:

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: