Ejercicio: Definición de recursos secundarios

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.

Está empezando a trabajar en las peticiones de su equipo de I+D, y decide empezar por construir una base de datos Azure Cosmos DB para los datos de prueba del dron de juguete. En este ejercicio, crea la cuenta de Azure Cosmos DB y dos recursos secundarios: uno mediante la propiedad parent y el otro como un recurso anidado.

Durante el proceso:

  • Crear un archivo Bicep que implemente una cuenta Cosmos DB.
  • Agregar una base de datos y un contenedor, que son recursos secundarios de la cuenta Cosmos BD.
  • Implementar la plantilla y comprobar el resultado.

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 que contenga una cuenta de Azure Cosmos DB

En primer lugar, cree una nueva plantilla de Bicep con una cuenta de Azure Cosmos DB. Para ello:

  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). Asegúrese de recordar dónde guardó el archivo. Por ejemplo, podría crear una carpeta scripts para guardarlo ahí.

  4. Agregue el siguiente contenido al archivo. Es una buena idea escribirlo manualmente en lugar de copiarlo y pegarlo. De este modo, puede ver cómo las herramientas le ayudan a escribir los archivos Bicep.

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param location string = resourceGroup().location
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    

    Sugerencia

    Bicep es estricto sobre dónde colocar saltos de línea, así que asegúrese de agregar saltos de línea solo donde se muestran aquí.

    Esta plantilla de Bicep implementa una cuenta de Azure Cosmos DB que es el recurso primario en el que se basa en la siguiente sección.

  5. Guarde los cambios en el archivo.

Agregar una base de datos

A continuación, cree la base de datos, que es un recurso secundario de la cuenta de Azure Cosmos DB.

  1. En la parte superior del archivo, entre los dos parámetros existentes, agregue el parámetro siguiente:

    param cosmosDBDatabaseThroughput int = 400
    
  2. En las declaraciones de parámetros, agregue la variable siguiente:

    var cosmosDBDatabaseName = 'FlightTests'
    
  3. Agregue la siguiente definición de recurso en la parte inferior del archivo, debajo de la definición del recurso de la cuenta de Azure Cosmos DB.

    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    }
    

    Observe que este código implementa la base de datos, que es un recurso secundario, mediante la propiedad parent. Observe también que el código usa el tipo de recurso completo, con la versión de API especificada explícitamente.

  4. Guarde los cambios en el archivo.

Agregar un contenedor

Ahora agregue otro recurso secundario. Esta vez, se agrega como un recurso anidado en lugar de usar la propiedad parent.

  1. Cerca de la parte superior del archivo, debajo de la definición de variable cosmosDBDatabaseName, agregue las siguientes variables:

    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
  2. Cerca de la parte inferior del archivo, dentro de la definición del recurso de base de datos y antes de su llave de cierre (}), agregue la siguiente definición de recurso anidado:

    resource container 'containers' = {
      name: cosmosDBContainerName
      properties: {
        resource: {
          id: cosmosDBContainerName
          partitionKey: {
            kind: 'Hash'
            paths: [
              cosmosDBContainerPartitionKey
            ]
          }
        }
        options: {}
      }
    }
    

    Observe que ha usado un tipo de recurso corto, containers, porque Bicep entiende que pertenece al tipo de recurso primario. Bicep sabe que el tipo de recurso completo es Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers. No especificó una versión de API, por lo que Bicep usa la versión del recurso primario, 2020-04-01.

    Cuando termine, la plantilla de Bicep completa debería tener un aspecto similar al de este ejemplo:

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param cosmosDBDatabaseThroughput int = 400
    param location string = resourceGroup().location
    
    var cosmosDBDatabaseName = 'FlightTests'
    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    
    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    
      resource container 'containers' = {
        name: cosmosDBContainerName
        properties: {
          resource: {
            id: cosmosDBContainerName
            partitionKey: {
              kind: 'Hash'
              paths: [
                cosmosDBContainerPartitionKey
              ]
            }
          }
          options: {}
        }
      }
    }
    
  3. Guarde los cambios en el archivo.

Implementación de la plantilla 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 el shell que se muestra en el lado derecho de la ventana de terminal es Bash, el shell correcto está abierto y puede ir a la sección siguiente.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

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

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. En la lista de shells de terminal, seleccione Bash.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. 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.

  3. Establezca la suscripción predeterminada para todos los comandos de la CLI de Azure que ejecute en esta sesión.

    az account set --subscription "Concierge Subscription"
    

    Nota:

    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. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.

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

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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

Ejecute el código siguiente desde el terminal en Visual Studio Code para implementar la plantilla de Bicep en Azure. Esta operación puede tardar un par de minutos en completarse, antes de ver que la implementación se ha realizado correctamente.

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

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 el shell que se muestra en el lado derecho de la ventana de terminal es powershell o pwsh, el shell correcto está abierto y puede ir a la sección siguiente.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

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

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. En la lista de shells de terminal, seleccione powershell o pwsh.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. 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.

  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. Úsela para el resto del ejercicio.

  3. Establezca la suscripción predeterminada para todos los comandos de Azure PowerShell que ejecute en esta sesión.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Nota:

    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. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.

  4. 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 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  5. 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

Implemente la plantilla en Azure usando el siguiente comando de Azure PowerShell en el terminal. Esta operación puede tardar un par de minutos en completarse, antes de ver que la implementación se ha realizado correctamente.

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 la página principal, seleccione Grupos de recursos. Aparece el panel 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.

    Screenshot of the Azure portal interface for the resource group overview, with the deployments section showing that one succeeded.

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

    Screenshot of the Azure portal interface for the deployments, with the one deployment listed and a succeeded status.

  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 cuenta de Cosmos DB, una base de datos y un contenedor en la lista.

    Screenshot of the Azure portal interface for the specific deployment, with three Cosmos DB resources listed.

  7. Deje abierta la página en el explorador para que pueda volver a comprobar las implementaciones más adelante.