Ejercicio: Implementación de plantillas de Resource Manager vinculadas y anidadas

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 a una suscripción especial llamada Suscripción de Concierge.

Aquí implementará una plantilla que incluye dos plantillas vinculadas en el entorno de espacio aislado proporcionado.

En este ejercicio se utilizan las Herramientas de Azure Resource Manager para Visual Studio Code. Asegúrese de instalar esta extensión en Visual Studio Code.

Configuración del entorno de prueba con la suscripción al espacio aislado de Azure proporcionado

Para realizar las implementaciones en esta unidad, debe iniciar sesión en la cuenta de Azure desde el terminal de Visual Studio Code.

Asegúrese de que ha iniciado sesión en la misma cuenta con la que ha activado el espacio aislado.

Inicio de sesión en Azure

  1. Desde el terminal de Visual Studio Code, ejecute el comando siguiente para iniciar sesión en Azure. Al ejecutar este comando, se abrirá un explorador que le permite iniciar sesión en la cuenta.

    Connect-AzAccount
    
  2. Después de iniciar sesión, verá una lista de las suscripciones asociadas a esta cuenta en el terminal. Si se ha activado el espacio aislado, la Suscripción a Concierge debe estar en esta lista.

  3. Obtenga el identificador de la suscripción. El comando siguiente mostrará las suscripciones y sus id. en un formato de tabla de fácil lectura. El identificador de la suscripción es la segunda columna. Busque Concierge Subscription y copie la segunda columna. Tiene un aspecto similar a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  4. Cambie la suscripción activa a la suscripción de Concierge. Asegúrese de sustituir {Your subscription ID} por el id. de Suscripción de Concierge que ha obtenido en el comando anterior.

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

Establecimiento del grupo de recursos predeterminado

Ahora tendrá que establecer como predeterminado el grupo de recursos que se ha creado de forma automática en el espacio aislado. Para realizar esa operación, en primer lugar debe obtener el nombre del grupo de recursos mediante el comando siguiente:

Get-AzResourceGroup

En este comando, use el nombre del recurso que ha obtenido del comando anterior. Tiene un aspecto similar a learn-a73131a1-b618-48b8-af70-21af7ca420c4. Este comando permite omitir ese parámetro del resto de los comandos de Azure PowerShell en este ejercicio.

Nota:

Normalmente, cuando se usa un comando de PowerShell o de la CLI de Azure para implementar una plantilla, es necesario especificar el nombre del grupo de recursos de destino. En el ejercicio de este módulo, vamos a omitir este requisito estableciendo el contexto de nuestra implementación. Vamos a especificar el nombre del grupo de recursos del espacio aislado en el paso siguiente mediante el comando Set-AzDefault de PowerShell.

Set-AzDefault -ResourceGroupName {Resource Group Name}

Implementación de una plantilla vinculada

En este ejercicio, revisaremos una plantilla que incluye dos plantillas vinculadas y se implementará.

  1. Para agregar una plantilla vinculada a la plantilla de Resource Manager, agregue un recurso Microsoft.Resources/deployments y la propiedad templateLink configurada con la ubicación de la plantilla.

  2. En la plantilla de ejemplo siguiente, observará que hay dos variables que definen plantillas remotas o externas ubicadas en un repositorio de GitHub.

    Revise la plantilla y anote las secciones "type": "Microsoft.Resources/deployments" que definen dónde y cómo se implementan las plantillas vinculadas.

    La primera plantilla vinculada implementa una cuenta de almacenamiento. Consume los parámetros primarios e implementa la plantilla de almacenamiento.

    La segunda plantilla vinculada está configurada para depender de la implementación de almacenamiento y para implementar una plantilla de red virtual.

    {
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string",
            "defaultValue": "linkeddemo001"
        }
    },
    "variables": {
        "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json",
        "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json"
    },
    "resources": [
        {
            "name": "storage",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template')]",
                    "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "location": { "value": "[resourceGroup().location]" }
                }
            }
        },
        {
            "name": "identity",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/deployments','storage')]"
            ],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template-2')]",
                    "contentVersion": "1.0.0.0"
                }
            }
        }
    ],
    "outputs": {}
    }
    
  3. Copie y pegue el contenido de la plantilla anterior en un archivo de un directorio local. Por ejemplo, use C:\JSON\linkedtemplate.json.

  4. Una vez que haya guardado el archivo localmente, use el comando siguiente de PowerShell para implementarlo en el nivel de grupo de recursos del que hemos hablado en la última unidad. En concreto, use New-AzResourceGroupDeployment.

        $templateFile="C:\JSON\linkedtemplate.json"
        $today=Get-Date -Format "MM-dd-yyyy"
        $DeploymentName="DeployLinkedTemplate-"+"$today"
    
        New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile
    

    Una vez finalizado, debe tener resultados como los del ejemplo siguiente.

    Resultados de la implementación de una plantilla vinculada.

  5. Valide los resultados.

    1. Vaya a Azure Portal y asegúrese de que está en la suscripción de espacio aislado. Para ello, seleccione el avatar en la esquina superior derecha de la página. Seleccione Cambiar directorio. En la lista, seleccione el directorio Espacio aislado de Microsoft Learn.

    2. En el panel de la izquierda, seleccione Grupos de recursos.

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

    4. En el área Información general, verá que la implementación se ha realizado correctamente. Seleccione 3 correcta para ver los detalles de la implementación. (Puede haber más implementaciones completas, en función de si se han realizado los ejercicios de la unidad anterior).

    Interfaz de Azure Portal para las implementaciones en la que se muestra una con el estado de correcta.

    Observará que ha implementado una plantilla, pero que se muestran tres en el panel de implementación del portal. Estas tres implementaciones corresponden a la plantilla principal y a las dos plantillas vinculadas.

    Interfaz de Azure Portal para la implementación específica sin recursos enumerados.

Inicio de sesión en Azure

  1. Desde el terminal de Visual Studio Code, ejecute el comando siguiente para iniciar sesión en Azure. Al ejecutar este comando, se abrirá un explorador que le permite iniciar sesión en la cuenta.

    az login
    
  2. Después de iniciar sesión, verá una lista JSON de las suscripciones asociadas a esta cuenta en el terminal. Si se ha activado el espacio aislado, la Suscripción a Concierge debe estar en esta lista.

  3. Obtenga el identificador de la suscripción. El comando siguiente muestra las suscripciones y sus identificadores. El id. de suscripción es la tercera columna. Busque Concierge Subscription y copie la tercera columna. Tiene un aspecto similar a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    az account list -o table
    
  4. Cambie la suscripción activa a la suscripción de Concierge. Asegúrese de sustituir {Your subscription ID} por el id. de Suscripción de Concierge que ha obtenido en el comando anterior.

    az account set -s {Your subscription ID}
    

Establecimiento del grupo de recursos predeterminado

Ahora tendrá que establecer como predeterminado el grupo de recursos que se ha creado de forma automática en el espacio aislado. Para realizar esa operación, en primer lugar debe obtener el nombre del grupo de recursos mediante el comando siguiente:

az group list -o table

En este comando, use el nombre del grupo de recursos que ha obtenido del comando anterior. (Tiene un aspecto similar a learn-a73131a1-b618-48b8-af70-21af7ca420c4). Establecer este valor predeterminado permite omitir ese parámetro del resto de los comandos de la CLI de Azure de este ejercicio.

Nota:

Normalmente, cuando se usa un comando de la CLI de Azure para implementar una plantilla, es necesario especificar el nombre del grupo de recursos de destino. En el ejercicio de este módulo, vamos a omitir este requisito estableciendo el contexto de nuestra implementación. Vamos a especificar el nombre del grupo de recursos del espacio aislado en el paso siguiente mediante el comando az configure de la CLI de Azure.

az configure --defaults group={Resource Group Name}

Implementación de una plantilla vinculada

En este ejercicio, revisaremos una plantilla que incluye dos plantillas vinculadas y se implementará.

  1. Para agregar una plantilla vinculada a la plantilla de Resource Manager, agregue un recurso Microsoft.Resources/deployments y la propiedad templateLink configurada con la ubicación de la plantilla.

  2. En la plantilla de ejemplo siguiente, observará que hay dos variables que definen plantillas remotas o externas ubicadas en un repositorio de GitHub.

    Revise la plantilla y anote las secciones "type": "Microsoft.Resources/deployments" que definen dónde y cómo se implementan las plantillas vinculadas.

    La primera plantilla vinculada implementa una cuenta de almacenamiento. Consume los parámetros primarios e implementa la plantilla de almacenamiento.

    La segunda plantilla vinculada está configurada para depender de la implementación de almacenamiento y para implementar una plantilla de red virtual.

    {
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string",
            "defaultValue": "linkeddemo001"
        }
    },
    "variables": {
        "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json",
        "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json"
    },
    "resources": [
      {
          "name": "storage",
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2019-10-01",
          "properties": {
              "mode": "Incremental",
              "templateLink": {
                  "uri": "[variables('linked-template')]",
                  "contentVersion": "1.0.0.0"
              },
              "parameters": {
                  "location": { "value": "[resourceGroup().location]" }
              }
          }
      },
      {
          "name": "identity",
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2019-10-01",
          "dependsOn": [
              "[resourceId('Microsoft.Resources/deployments','storage')]"
          ],
          "properties": {
              "mode": "Incremental",
              "templateLink": {
                  "uri": "[variables('linked-template-2')]",
                  "contentVersion": "1.0.0.0"
              }
          }
      }
    ],
    "outputs": {}
    }
    
  3. Copie y pegue el contenido de la plantilla anterior en un archivo de un directorio local. Por ejemplo, use C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json.

  4. Después de guardar el archivo localmente, impleméntelo en el nivel de grupo de recursos mediante el comando siguiente de la CLI de Azure. En concreto, utilice az deployment group create.

    templateFile=/mnt/c/Users/<UserName>/json/linkedtemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-3-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile
    

    Una vez finalizado, debe tener resultados como los del ejemplo siguiente. Compruebe el valor "provisioningState" para asegurarse de que la implementación se ha realizado correctamente.

    {- Finished ..
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-3-2020-08-19",
      "properties": {
        "correlationId": "f127f689-badf-4063-ad55-dff549e63e48",
        "debugSetting": null,
        "dependencies": [
          {
            "dependsOn": [
              {
                "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/storage",
                "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
                "resourceName": "storage",
                "resourceType": "Microsoft.Resources/deployments"
              }
            ],
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/identity",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
            "resourceName": "identity",
            "resourceType": "Microsoft.Resources/deployments"
          }
        ],
        "duration": "PT16.4639167S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Network/virtualNetworks/vnet-001",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
          },
          {
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
          }
        ],
        "outputs": {},
        "parameters": {
          "name": {
            "type": "String",
            "value": "linkeddemo001"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Resources",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  null
                ],
                "properties": null,
                "resourceType": "deployments"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "12700491000282730217",
        "templateLink": null,
        "timestamp": "2020-08-19T21:07:18.729310+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    
  5. Valide los resultados.

    1. Vaya a Azure Portal y asegúrese de que está en la suscripción de espacio aislado. Para ello, seleccione el avatar en la esquina superior derecha de la página. Seleccione Cambiar directorio. En la lista, seleccione el directorio Espacio aislado de Microsoft Learn.

    2. En el panel de la izquierda, seleccione Grupos de recursos.

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

    4. En el área Información general, verá que la implementación se ha realizado correctamente. Seleccione 3 correcta para ver los detalles de la implementación. (Puede haber más implementaciones completas, en función de si se han realizado los ejercicios de la unidad anterior).

    Interfaz de Azure Portal para las implementaciones en la que se muestra una con el estado de correcta.

    Observará que ha implementado una plantilla, pero que se muestran tres en el panel de implementación del portal. Estas tres implementaciones corresponden a la plantilla principal y a las dos plantillas vinculadas.

    Interfaz de Azure Portal para la implementación específica sin recursos enumerados.