Implementación de plantillas en varios ámbitos

Completado

Ahora comprende los distintos ámbitos en los que puede implementar recursos. En esta unidad, aprenderá a empezar a escribir archivos de Bicep para implementarlos en estos ámbitos.

Especificación del ámbito de destino de un archivo de Bicep

Bicep debe conocer el ámbito en el que se implementa un archivo. Esta información es importante porque Bicep debe asegurarse de que los recursos que va a implementar son válidos para el ámbito que está usando. Por ejemplo, la extensión de Bicep para Visual Studio Code le advierte si intenta definir un recurso en un ámbito no admitido.

Use la palabra clave targetScope para indicar a Bicep que los recursos del archivo son para un ámbito específico. Este es un ejemplo de un archivo de Bicep que implementa recursos en el ámbito del grupo de administración:

targetScope = 'managementGroup'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-09-01' = {
  // ...
}

Tenga en cuenta que le indica a Bicep que implemente los recursos en el ámbito de un grupo de administración, pero no está especificando qué grupo de administración. Al implementar la plantilla, indica a Bicep exactamente en qué grupo de administración quiere implementar los recursos. Los cmdlets de la CLI de Azure y Azure PowerShell proporcionan argumentos para especificar esta información.

Puede establecer para el archivo targetScope en resourceGroup, subscription, managementGroup o tenant. Si no especifica un ámbito de destino, Bicep asume el ámbito resourceGroup.

Crear grupos de recursos

Ahora que comprende cómo crear implementaciones en varios ámbitos, intente aplicar este conocimiento a la creación de un grupo de recursos, que es un recurso con ámbito de suscripción:

targetScope = 'subscription'

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

En este ejemplo, observe que el archivo de Bicep tiene un targetScope de subscription, lo que significa que Bicep considera todos los recursos del archivo como con ámbito de suscripción de manera predeterminada.

Nota:

Verá cómo usar Bicep para crear suscripciones y grupos de administración de Azure más adelante en este módulo.

Envío de una implementación

Al iniciar una implementación, debe indicar a Azure en qué ámbito quiere implementarla. Esto significa que usa un comando de la CLI de Azure diferente para cada ámbito de implementación, como se muestra aquí:

Para implementar en este ámbito: Ejecute este comando de la CLI de Azure:
Resource group az deployment group create
Subscription az deployment sub create
Grupo de administración az deployment mg create
Inquilino az deployment tenant create

Al iniciar una implementación, debe indicar a Azure en qué ámbito quiere implementarla. Esto significa que usa un cmdlet de PowerShell diferente para cada ámbito de implementación, como se muestra aquí:

Para implementar en este ámbito: Use este cmdlet de PowerShell:
Resource group New-AzResourceGroupDeployment
Subscription New-AzSubscriptionDeployment
Grupo de administración New-AzManagementGroupDeployment
Inquilino New-AzTenantDeployment

Azure almacena metadatos sobre cada implementación. A diferencia de las implementaciones en el ámbito del grupo de recursos, hay cierta información que debe proporcionar al implementar en otros ámbitos para que Azure pueda almacenar los metadatos correctamente:

  • Ubicación: los metadatos de implementación deben almacenarse en una ubicación que especifique. No es necesario especificar una ubicación para las implementaciones de ámbito del grupo de recursos, ya que los metadatos de implementación usan la misma ubicación que el grupo de recursos. Sin embargo, al crear una implementación en el ámbito de suscripción, grupo de administración o inquilino, debe especificar la región de Azure en la que se almacenan los metadatos de implementación. Los recursos de la implementación en estos ámbitos no siempre se crean en la misma ubicación que especificó para los metadatos.

  • Nombre: todas las implementaciones de Azure tienen un nombre. Puede solicitar a Azure información sobre una implementación usando su nombre. Al usar la CLI de Azure o Azure PowerShell para enviar una implementación, no es necesario especificar el nombre. Pero si no lo hace, el nombre de archivo de plantilla se usa como nombre de implementación.

La combinación del ámbito, la ubicación y el nombre de la implementación debe ser única. Por ejemplo, supongamos que crea una implementación de suscripción denominada my-deployment y usa la ubicación Este de EE. UU. para almacenar sus metadatos. No se puede crear otra implementación en la misma suscripción denominada my-deployment, incluso si se encuentra en una ubicación diferente, como Oeste de Europa. Si crea otra implementación denominada my-deployment en Este de EE. UU., sobrescribe la implementación existente.