Ejercicio: Uso de módulos del registro

Completado

En el ejercicio anterior, ha publicado los módulos sde CDN y del sitio web en el registro de la empresa de juguetes. Ahora, quiere mostrarle al equipo que está desarrollando el perro de juguete cómo usar los módulos para su propia implementación.

En este ejercicio, aprenderá a:

  • Cree un archivo Bicep que incluya módulos del registro privado.
  • Agregue referencias a los módulos del registro.
  • Compile e inspeccione el archivo de Bicep para comprender cómo funciona el proceso de restauración del módulo.
  • Cambie mediante un alias del Registro.
  • Implemente el archivo de Bicep en Azure.

Creación de un archivo de Bicep

  1. En Visual Studio Code, cree un archivo denominado main.bicep.

  2. Guarde el archivo vacío para que Visual Studio Code cargue las herramientas de Bicep.

    Puede seleccionar Archivo>Guardar como o Ctrl+S en Windows (⌘+S en macOS). Asegúrese de recordar dónde guarda el archivo. Por ejemplo, podría crear una carpeta templates para guardarlo ahí.

Adición de los módulos al archivo de Bicep

  1. En el archivo main.bicep, agregue los parámetros y variables siguientes:

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-dog-plan'
    
  2. Debajo de los parámetros y las variables, use el siguiente código para agregar el módulo de sitio web desde el registro. Reemplace YOUR_CONTAINER_REGISTRY_NAME por el nombre del registro privado.

    module website 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Observe que Bicep muestra líneas onduladas de color rojo debajo del identificador del módulo al empezar a escribir, pero después desaparecen. Este comportamiento se produce porque la extensión Bicep para Visual Studio Code lee el módulo del registro y lo guarda en el sistema de archivos local.

  3. Debajo del módulo que ha creado, use el siguiente código para agregar el módulo de CDN desde el registro. Reemplace YOUR_CONTAINER_REGISTRY_NAME por el nombre del registro privado.

    module cdn 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Guarde el archivo.

Compilación e inspección del archivo de Bicep

Aquí, compilará el archivo de Bicep en una plantilla de ARM en formato JSON. Normalmente no es necesario realizar una compilación, pero resulta útil al aprender cómo funcionan los módulos.

  1. En el terminal de Visual Studio Code, ejecute el comando siguiente para compilar el archivo de Bicep en un archivo JSON:

    az bicep build --file main.bicep
    

    Bicep crea un archivo denominado main.json en la misma carpeta que el archivo main.bicep.

  2. Abra el archivo main.json.

    Observe que, en la sección resources de la plantilla de ARM de JSON, a partir de la línea 134, algunos recursos tienen el tipo Microsoft.Resources/deployments. Estos recursos representan las implementaciones de módulo que se han definido en el módulo que ha agregado desde el registro.

  1. En el terminal de Visual Studio Code, ejecute el comando siguiente para compilar el archivo de Bicep en un archivo JSON:

    bicep build main.bicep
    

    Bicep crea un archivo denominado main.json en la misma carpeta que el archivo main.bicep.

  2. Abra el archivo main.json.

    Observe que, en la sección resources de la plantilla de ARM de JSON, a partir de la línea 134, algunos recursos tienen el tipo Microsoft.Resources/deployments. Estos recursos representan las implementaciones de módulo que se han definido en el módulo que ha agregado desde el registro.

Creación de un alias del registro

Decide crear un alias del registro en lugar de insertar la dirección URL del registro en el archivo de Bicep. Este enfoque facilita la lectura del archivo de Bicep.

  1. En Visual Studio Code, cree un archivo denominado bicepconfig.json. Créelo en la misma carpeta que el archivo main.bicep.

  2. Pegue el siguiente código en el archivo bicepconfig.json. Reemplace YOUR_CONTAINER_REGISTRY_NAME por el nombre del registro privado.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Guarde el archivo.

Uso del alias del registro

Aquí, actualizará el archivo de Bicep para usar el alias del registro en lugar de hacerle referencia de forma directa.

  1. Abra el archivo main.bicep.

  2. Busque la definición del módulo website y cambie la definición para incluir el alias del registro:

    module website 'br/ToyCompanyRegistry:website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Sugerencia

    Asegúrese de cambiar el principio de la ruta del módulo de br: a br/. Además, después de ToyCompanyRegistry, cambie el carácter de barra diagonal (/) por dos puntos (:).

  3. Realice un cambio similar en el módulo cdn:

    module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Guarde el archivo.

Comprobación del archivo de Bicep

Una vez completados todos los cambios anteriores, el archivo main.bicep debe tener el siguiente aspecto:

@description('The Azure region into which the resources should be deployed.')
param location string = 'westus3'

@description('The name of the App Service app.')
param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'

@description('The name of the App Service plan SKU.')
param appServicePlanSkuName string = 'F1'

var appServicePlanName = 'toy-dog-plan'

module website 'br/ToyCompanyRegistry:website:v1' = {
  name: 'toy-dog-website'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
  name: 'toy-dog-cdn'
  params: {
    httpsOnly: true
    originHostName: website.outputs.appServiceAppHostName
  }
}

Si el archivo no coincide, copie el ejemplo o ajuste la plantilla para que coincida.

Implementar en Azure

En el terminal de Visual Studio Code, ejecute el comando siguiente para implementar la plantilla en Azure. Este proceso puede tardar un par de minutos en completar una implementación correcta.

az deployment group create \
   --template-file main.bicep
New-AzResourceGroupDeployment -TemplateFile main.bicep

Comprobación de la implementación

  1. Vaya a Azure Portal y asegúrese de que está en la suscripción de espacio aislado:

    1. Seleccione el avatar en la esquina superior derecha de la página.
    2. Seleccione Cambiar directorio. En la lista, seleccione el directorio Espacio aislado de Microsoft Learn.
  2. En el panel izquierdo, seleccione Grupos de recursos.

  3. Seleccione [nombre del grupo de recursos del espacio aislado].

  4. En el menú de la izquierda, seleccione Implementaciones.

    Captura de pantalla de Azure Portal que muestra el grupo de recursos, con el elemento de menú Implementaciones resaltado.

    Tome en cuenta que se enumeran tres implementaciones:

    • main representa la implementación del archivo de Bicep primario.
    • toy-dog-cdn and toy-dog-website representan los módulos que ha incluido en el archivo main.bicep.
  5. Seleccione la implementación principal y expanda Deployment details (Detalles de implementación).

    Observe que ambos módulos aparecen en la lista y que sus tipos se muestran como Microsoft.Resources/deployments. El módulo toy-dog-website aparece dos veces porque también se hace referencia a su salida dentro de la plantilla.

    Captura de pantalla de Azure Portal que muestra los detalles de la implementación principal.

  6. Seleccione las implementaciones toy-dog-cdn y toy-dog-website, y revise los recursos implementados en cada una de ellas. Observe que se corresponden con los recursos definidos en los módulos correspondientes.