Implantar modelos em vários escopos

Concluído

Agora você entende os vários escopos em que pode implementar recursos. Nesta unidade, você aprenderá a iniciar a gravação de arquivos Bicep para implantação nesses escopos.

Especificar o escopo de destino para um arquivo Bicep

O Bicep precisa saber o escopo no qual um arquivo está implantado. Essas informações são importantes porque o Bicep precisa garantir que os recursos que você está implantando sejam válidos para o escopo que está sendo usado. Por exemplo, a extensão Bicep para Visual Studio Code exibirá um aviso se você tentar definir um recurso em um escopo sem suporte.

Use a palavra-chave targetScope para informar o Bicep de que os recursos no arquivo são para um escopo específico. Este é um exemplo de um arquivo Bicep que implanta recursos no escopo do grupo de gerenciamento:

targetScope = 'managementGroup'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
  // ...
}

Observe que você está informando ao Bicep para implantar os recursos no escopo de um grupo de gerenciamento, mas não está especificando qual grupo de gerenciamento. Ao implantar o modelo, você informa o Bicep exatamente em qual grupo de gerenciamento deseja implantar os recursos. Os cmdlets da CLI do Azure e do Azure PowerShell fornecem argumentos para especificar essas informações.

Você pode definir o targetScope para o arquivo como resourceGroup, subscription, managementGroup ou tenant. Se você não especificar um escopo de destino, o Bicep assumirá o escopo resourceGroup.

Criar grupos de recursos

Agora que você entendeu como criar implantações em vários escopos, experimente aplicar essa compreensão à criação de um grupo de recursos, que é um recurso com escopo de assinatura:

targetScope = 'subscription'

resource resourceGroup 'Microsoft.Resources/resourceGroups@2024-07-01' = {
  name: 'example-resource-group'
  location: 'westus'
}

Neste exemplo, observe que o arquivo Bicep tem um targetScope especificado como subscription, o que significa que o Bicep vai considerar que todos os recursos no arquivo tenham o escopo de assinatura por padrão.

Observação

Você verá como usar o Bicep para criar assinaturas e grupos de gerenciamento do Azure mais adiante neste módulo.

Enviar uma implantação

Ao iniciar uma implantação, você precisa informar ao Azure em qual escopo deseja implantá-la. Isso significa que você usará um comando diferente da CLI do Azure para cada escopo de implantação, conforme mostrado aqui:

Para implantação nesse escopo: Execute este comando da CLI do Azure:
Resource group az deployment group create
Subscription az deployment sub create
Grupo de gerenciamento az deployment mg create
Locatário az deployment tenant create

Ao iniciar uma implantação, você precisa informar ao Azure em qual escopo deseja implantá-la. Isso significa que você usará um cmdlet diferente do PowerShell para cada escopo de implantação, conforme mostrado aqui:

Para implantação nesse escopo: Use este cmdlet do PowerShell:
Resource group New-AzResourceGroupDeployment
Subscription New-AzSubscriptionDeployment
Grupo de gerenciamento New-AzManagementGroupDeployment
Locatário New-AzTenantDeployment

O Azure armazena metadados sobre cada implantação. Ao contrário das implantações no escopo do grupo de recursos, há algumas informações que você precisa fornecer ao implantar em outros escopos, de modo que o Azure possa armazenar os metadados corretamente:

  • Localização: os metadados da implantação devem ser armazenados em uma localização especificada por você. Você não precisa especificar um local para implantações de escopo do grupo de recursos, pois os metadados de implantação usam o mesmo local que o grupo de recursos. No entanto, ao criar uma implantação no escopo da assinatura, do grupo de gerenciamento ou do locatário, você precisa especificar a região do Azure na qual os metadados da implantação estão armazenados. Os recursos para sua implantação nesses escopos nem sempre são criados no mesmo local especificado para os metadados.

  • Nome: todas as implantações do Azure têm um nome. Você pode solicitar ao Azure informações sobre uma implantação usando o respectivo nome. Quando você usa a CLI do Azure ou o Azure PowerShell para enviar uma implantação, não é necessário especificar o nome. Mas se você não fizer isso, o nome do arquivo de modelo será usado como o nome da implantação.

A combinação do escopo, da localização e do nome da implantação precisa ser exclusiva. Por exemplo, digamos que você crie uma implantação de assinatura com o nome my-deployment e use a localização Leste dos EUA para armazenar os metadados. Você não pode criar outra implantação para a mesma assinatura com o nome my-deployment, mesmo que ela esteja em um local diferente, como o Oeste da Europa. Se você criar outra implantação com o nome my-deployment no Leste dos EUA, ela substituirá a implantação existente.