Implantar modelos em vários escopos

Concluído

Agora você entende os vários escopos nos quais você pode implantar recursos. Nesta unidade, você aprenderá como começar a escrever arquivos Bicep para implantar nesses escopos.

Especificar o escopo de destino para um arquivo Bicep

O Bicep precisa saber o escopo no qual um arquivo é 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 você está usando. Por exemplo, a extensão Bicep para Visual Studio Code avisa se você tentar definir um recurso em um escopo sem suporte.

Use a targetScope palavra-chave para informar ao Bicep que os recursos no arquivo são para um escopo específico. Aqui está 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á dizendo 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 ao Bicep exatamente em qual grupo de gerenciamento deseja implantar os recursos. Os cmdlets CLI do Azure e Azure PowerShell fornecem argumentos para especificar essas informações.

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

Criar grupos de recursos

Agora que você entende como criar implantações em vários escopos, tente aplicar esse entendimento à 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 de , o que significa que o Bicep considera todos os recursos no arquivo como escopo de subscriptionassinatura por padrão.

Nota

Você verá como usar o Bicep para criar assinaturas do Azure e grupos de gerenciamento posteriormente 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ê usa um comando diferente da CLI do Azure para cada escopo de implantação, conforme mostrado aqui:

Para implantar neste escopo: Execute este comando da CLI do Azure:
Grupo de recursos az deployment group create
Subscrição az deployment sub create
Grupo de gestão az deployment mg create
Inquilino az deployment tenant create

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

Para implantar neste escopo: Use este cmdlet do PowerShell:
Grupo de recursos New-AzResourceGroupDeployment
Subscrição New-AzSubscriptionDeployment
Grupo de gestão New-AzManagementGroupDeployment
Inquilino 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 para que o Azure possa armazenar os metadados corretamente:

  • Local: os metadados de implantação devem ser armazenados em um local que você especificar. Não é necessário especificar um local para implantações de escopo de grupo de recursos, porque os metadados de implantação usam o mesmo local que o grupo de recursos. No entanto, ao criar uma implantação no escopo de assinatura, grupo de gerenciamento ou locatário, você precisa especificar a região do Azure na qual os metadados de implantação sã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 no Azure têm um nome. Você pode solicitar ao Azure informações sobre uma implantação usando seu nome. Quando você usa a CLI do Azure ou o Azure PowerShell para enviar uma implantação, não precisa 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, local e nome da implantação deve ser exclusiva. Por exemplo, digamos que você crie uma implantação de assinatura com o nome my-deployment e use o local Leste dos EUA para armazenar seus metadados. Não é possível criar outra implantação para a mesma assinatura também chamada my-deployment, mesmo que ela esteja em um local diferente, como a Europa Ocidental. Se você criar outra implantação nomeada my-deployment no Leste dos EUA, ela substituirá a implantação existente.