Ejercicio: Adición de parámetros y decoradores

Completado

Nota:

La primera vez que active un espacio aislado y acepte los términos, la cuenta de Microsoft se asocia a un nuevo directorio de Azure denominado Espacio aislado de Microsoft Learn. Se le agrega también a una suscripción especial llamada Suscripción de Concierge.

Como parte de la migración de la aplicación de RR. HH., va a crear una plantilla de Bicep para implementar recursos de Azure. En este ejercicio, creará una un plan de Azure App Service y una aplicación de App Service. Aplicará decoradores a cada parámetro para asegurarse de que estos siempre contengan los valores previstos.

Durante el proceso, hará estas tareas:

  • Crear un archivo de Bicep que incluya parámetros y variables.
  • Agregar decoradores a los parámetros.
  • Probará la implementación para asegurarse de que la plantilla sea válida.

En este ejercicio se usa la extensión de Bicep para Visual Studio Code. Asegúrese de instalar esta extensión en Visual Studio Code.

Creación de una plantilla de Bicep con parámetros

  1. Abra Visual Studio Code.

  2. Cree un archivo con el nombre main.bicep.

  3. 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). Debe acordarse de dónde ha guardado el archivo. Por ejemplo, podría crear una carpeta scripts para guardarlo ahí.

  4. Agregue el siguiente contenido al archivo. Implementará la plantilla pronto. Es recomendable que lo escriba usted mismo en lugar de copiarlo y pegarlo, para que pueda ver cómo las herramientas le ayudan a escribir los archivos de Bicep.

    param environmentName string = 'dev'
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    param appServicePlanInstanceCount int = 1
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    param location string = 'eastus'
    
    var appServicePlanName = '${environmentName}-${solutionName}-plan'
    var appServiceAppName = '${environmentName}-${solutionName}-app'
    

    Aquí va a crear varios parámetros, que usan una combinación de tipos. Va a definir valores predeterminados para cada parámetro. Algunos de los valores predeterminados incluyen la interpolación de cadenas y la función uniqueString().

    Sugerencia

    La función uniqueString() es útil para crear nombres de recursos únicos globalmente. Devuelve una cadena que es la misma en cada implementación en el mismo grupo de recursos, pero diferente cuando se implementa en suscripciones o grupos de recursos distintos.

    También va a definir variables que construyen los nombres del plan de Azure App Service y de la aplicación de App Service. Sus valores incluyen algunos de los parámetros que ha especificado. El usuario que ejecuta la implementación puede invalidar los valores de parámetros, pero los valores de las variables no se pueden invalidar.

    Sugerencia

    Está especificando que el parámetro location debe establecerse en westus3. Normalmente, crearía recursos en la misma ubicación que el grupo de recursos mediante la propiedad resourceGroup().location. Pero cuando trabaja con el espacio aislado Microsoft Learn, debe usar determinadas regiones de Azure que no coincidan con la ubicación del grupo de recursos.

  5. En el archivo main.bicep en Visual Studio Code, agregue el código siguiente en la parte inferior:

    resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSku.name
        tier: appServicePlanSku.tier
        capacity: appServicePlanInstanceCount
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Observe que los recursos usan los valores de los parámetros definidos.

  6. Guarde los cambios en el archivo.

Adición de descripciones de los parámetros

  1. En el archivo main.bicep de Visual Studio Code, agregue el decorador @description directamente encima de cada parámetro creado en la tarea anterior. Los parámetros deben ser similares a los de este ejemplo:

    @description('The name of the environment. This must be dev, test, or prod.')
    param environmentName string = 'dev'
    
    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
    @description('The number of App Service plan instances.')
    param appServicePlanInstanceCount int = 1
    
    @description('The name and tier of the App Service plan SKU.')
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    
    @description('The Azure region into which the resources should be deployed.')
    param location string = 'eastus'
    
  2. Guarde los cambios en el archivo.

Limitación de los valores de entrada

Su empresa de juguetes implementará la aplicación de recursos humanos en tres entornos: dev, test y prod. Limitará el parámetro environmentName para permitir solo esos tres valores.

  1. En el archivo main.bicep de Visual Studio Code, busque el parámetro environmentName. Inserte un decorador @allowed debajo de su decorador @description. Cuando haya terminado, el parámetro debe tener un aspecto parecido al de este ejemplo:

    @description('The name of the environment. This must be dev, test, or prod.')
    @allowed([
      'dev'
      'test'
      'prod'
    ])
    param environmentName string = 'dev'
    

    Tenga en cuenta que va a limitar el valor del parámetro environmentName solo a dev, test y prod. Si se agregan más entornos en el futuro, deberá actualizar esta lista.

  2. Guarde los cambios en el archivo.

Limitación de las longitudes de entrada

El parámetro solutionName se usa para generar los nombres de los recursos. Quiere aplicar una longitud mínima de 5 caracteres y una longitud máxima de 30 caracteres.

  1. En el archivo main.bicep de Visual Studio Code, busque el parámetro solutionName. Agregue los decoradores @minLength y @maxLength debajo del decorador @description. Cuando haya terminado, el parámetro debe tener un aspecto parecido al de este ejemplo:

    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    @minLength(5)
    @maxLength(30)
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
  2. Guarde los cambios en el archivo.

Limitación de los valores numéricos

A continuación, se asegurará de que el parámetro appServicePlanInstanceCount solo admita valores entre 1 y 10.

  1. En el archivo main.bicep de Visual Studio Code, busque el parámetro appServicePlanInstanceCount. Agregue los decoradores @minValue y @maxValue debajo del decorador @description. Cuando haya terminado, el parámetro debe tener un aspecto parecido al de este ejemplo:

    @description('The number of App Service plan instances.')
    @minValue(1)
    @maxValue(10)
    param appServicePlanInstanceCount int = 1
    
  2. Guarde los cambios en el archivo.

Comprobación del archivo de Bicep

Una vez completados todos los cambios anteriores, el archivo de Bicep debe tener un aspecto parecido al de este ejemplo:

@description('The name of the environment. This must be dev, test, or prod.')
@allowed([
  'dev'
  'test'
  'prod'
])
param environmentName string = 'dev'

@description('The unique name of the solution. This is used to ensure that resource names are unique.')
@minLength(5)
@maxLength(30)
param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'

@description('The number of App Service plan instances.')
@minValue(1)
@maxValue(10)
param appServicePlanInstanceCount int = 1

@description('The name and tier of the App Service plan SKU.')
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

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

var appServicePlanName = '${environmentName}-${solutionName}-plan'
var appServiceAppName = '${environmentName}-${solutionName}-app'

resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSku.name
    tier: appServicePlanSku.tier
    capacity: appServicePlanInstanceCount
  }
}

resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

Si no es así, copie el ejemplo o ajuste la plantilla para que coincida con él.

Implementación de la plantilla de Bicep en Azure

Para implementar esta plantilla en Azure, debe iniciar sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que tiene instalada la CLI de Azure y de que inicia sesión con la misma cuenta que utilizó para activar el espacio aislado.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

  2. Si la ventana del terminal muestra Bash en el lado derecho, significa que el shell correcto ya está abierto. Como alternativa, si ve un icono de shell de Bash a la derecha, puede seleccionarlo para iniciar el shell.

    Captura de pantalla de la ventana de terminal de Visual Studio Code, en la que se muestra la opción bash.

    Si apareciera un shell distinto de Bash, seleccione la flecha de la lista desplegable del shell y, a continuación, seleccione Bash de Git.

    Captura de pantalla de la ventana de terminal de Visual Studio Code, en la que se muestra la lista desplegable de shell de terminal y la selección de Git Bash (valor predeterminado).

  3. En el terminal, vaya al directorio donde ha guardado la plantilla. Por ejemplo, si ha guardado la plantilla en la carpeta templates, puede usar este comando:

    cd templates
    

Instalación de Bicep

Ejecute el comando siguiente para asegurarse de que tiene la versión más reciente de Bicep:

az bicep install && az bicep upgrade

Inicio de sesión en Azure

  1. En el terminal de Visual Studio Code, inicie sesión en Azure mediante el siguiente comando:

    az login
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure. En el terminal de Visual Studio Code se muestra una lista de las suscripciones asociadas a esta cuenta. Seleccione la suscripción llamada Suscripción de Concierge.

    Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada.

    1. Obtenga los identificadores de la Suscripción de Concierge.

        az account list \
         --refresh \
         --query "[?contains(name, 'Concierge Subscription')].id" \
         --output table
      
    2. Establezca la suscripción predeterminada con el identificador de la suscripción. Reemplace {identificador de su suscripción} por el identificador más reciente de la Suscripción de Concierge.

      az account set --subscription {your subscription ID}
      

Establecimiento del grupo de recursos predeterminado

Al usar la CLI de Azure, puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de la CLI de Azure de este ejercicio. Establezca el valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Implementación de la plantilla en Azure con la CLI de Azure

Ejecute el código siguiente desde el terminal en Visual Studio Code para implementar la plantilla de Bicep en Azure. No es necesario especificar los valores de parámetros porque tienen valores predeterminados especificados. Este proceso puede tardar un par de minutos en completarse; después, verá que la implementación se ha realizado correctamente.

az deployment group create --name main --template-file main.bicep

Verá Running... en el terminal.

Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de haber instalado Azure PowerShell e inicie sesión en la misma cuenta que ha activado el espacio aislado.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

  2. Si la ventana del terminal muestra pwsh o powershell en el lado derecho, significa que el shell correcto ya está abierto. Como alternativa, si ve un icono de shell de PowerShell a la derecha, puede seleccionarlo para iniciar el shell.

    Captura de pantalla de la ventana de terminal de Visual Studio Code, en la que se muestra la opción pwsh en la lista desplegable de shell.

    Si aparece un shell distinto de pwsh o PowerShell, seleccione la flecha desplegable del shell y, a continuación, seleccione PowerShell.

    Captura de pantalla de la ventana del terminal de Visual Studio Code, en la que se muestra la lista desplegable del shell del terminal y PowerShell seleccionado.

  3. En el terminal, vaya al directorio donde ha guardado la plantilla. Por ejemplo, si ha guardado la plantilla en la carpeta templates, puede usar este comando:

    Set-Location -Path templates
    

Instalación de la CLI de Bicep

Para usar Bicep desde Azure PowerShell, instale la CLI de Bicep.

Inicio de sesión en Azure mediante Azure PowerShell

  1. En el terminal de Visual Studio Code, ejecute el comando siguiente:

    Connect-AzAccount
    

    Se abre un explorador para que pueda iniciar sesión en la cuenta de Azure. Es posible que el explorador se abra en segundo plano.

  2. Después de iniciar sesión, en el terminal se muestra una lista de las suscripciones asociadas a esta cuenta. Si ha activado el espacio aislado, se muestra una suscripción denominada Suscripción de Concierge. Selecciónelo para el resto del ejercicio.

    Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada.

    1. Obtenga el identificador de la suscripción. Al ejecutar el comando siguiente se mostrarán las suscripciones y sus identificadores. Busque Concierge Subscription y copie el identificador de la segunda columna. Tiene un aspecto similar a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

      Get-AzSubscription
      
    2. Cambie la suscripción activa a la Suscripción de Concierge. Asegúrese de reemplazar {identificador de la suscripción} por el que ha copiado.

      $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
      Set-AzContext $context
      

Establecimiento del grupo de recursos predeterminado

Puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de Azure PowerShell de este ejercicio. Establezca este valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Implementación de la plantilla en Azure mediante PowerShell

Implemente la plantilla en Azure usando el siguiente comando de Azure PowerShell en el terminal. No es necesario especificar los valores de parámetros porque tienen valores predeterminados especificados. Este proceso puede tardar un par de minutos en completarse; después, verá que la implementación se ha realizado correctamente.

New-AzResourceGroupDeployment -Name main -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 la Información general, puede ver la implementación realizada correctamente.

    Captura de pantalla de la interfaz de Azure Portal con información general del grupo de recursos, con la sección de implementaciones que muestra la implementación que se ha realizado correctamente.

  5. Seleccione 1 correcta para ver los detalles de la implementación.

    Captura de pantalla de la interfaz de Azure Portal con las implementaciones, donde se muestra la implementación con el estado correcto.

  6. Seleccione la implementación llamada main para ver qué recursos se han implementado; después, seleccione Detalles de la implementación para expandirla. En este caso, hay una aplicación y un plan de App Service.

    Captura de pantalla de la interfaz de Azure Portal de la implementación específica, con una aplicación y un plan de App Service mostrados.

  7. En el menú de la izquierda, seleccione Entradas.

    Captura de pantalla de la interfaz de Azure Portal de la implementación específica, con el elemento de menú

  8. Observe que se muestran los parámetros y sus valores.

    Captura de pantalla de la interfaz de Azure Portal de la implementación específica, donde se muestran los valores de parámetros.

  9. Deje la página abierta en el explorador. Tendrá que volver a comprobar las implementaciones posteriormente.