Ejercicio: Control del orden de implementación de recursos

Completado

En esta parte, para comenzar se realizan algunas tareas básicas de configuración. En Visual Studio Code, conectará una sesión de terminal a la suscripción de Azure proporcionada por el entorno de espacio aislado de Azure gratuito. De esta forma, podrá autenticar comandos en Azure.

A continuación, ejecutará una plantilla básica de Resource Manager que aprovisiona una máquina virtual (VM) Linux. Una vez finalizada la implementación, comprobará que la máquina virtual se está ejecutando y se puede conectar.

Aunque trabajar con máquinas virtuales es una tarea común, descubrirá que un recurso de máquina virtual requiere componentes de red y almacenamiento que deben existir antes de que se pueda crear la máquina virtual. Verá cómo la construcción dependsOn le permite establecer el orden de aprovisionamiento de los recursos.

Configurar

Aquí, abrirá Visual Studio Code, creará una sesión de PowerShell y se conectará a la suscripción de Azure proporcionada por el entorno de espacio aislado de Azure gratuito.

Estas tareas de configuración se deben realizar una vez durante este módulo. Si sale de la sesión o se desconecta en un ejercicio posterior, puede volver a consultar estos pasos.

Apertura de PowerShell en Visual Studio Code

  1. Abra Visual Studio Code.

  2. Abra una ventana de terminal mediante el menú Terminal.

  3. Si el menú desplegable de la derecha de la ventana de terminal muestra pwsh, tiene el shell correcto desde el que trabajar y puede ir a la siguiente sección.

    Screenshot of Terminal window, terminal type.

  4. En caso contrario, seleccione la lista desplegable y elija Seleccionar el shell predeterminado.

  5. Seleccione pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Seleccione + en el terminal para crear un terminal con pwsh como shell.

Inicio de sesión en Azure

  1. Ejecute Connect-AzAccount para iniciar sesión en la cuenta.

    Connect-AzAccount
    

    Aparece una ventana del explorador.

  2. Seleccione la cuenta que usó para activar el espacio aislado y cierre la ventana del explorador cuando se le solicite.

Establecimiento de la suscripción activa

  1. Ejecute Get-AzSubscription para obtener el identificador de suscripción del entorno de espacio aislado.

    Get-AzSubscription
    

    Busque Concierge Subscription y copie la segunda columna. Tendrá un aspecto similar a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  2. Ejecute Set-AzContext para cambiar la suscripción activa a la Suscripción de Concierge.

    Nota:

    Asegúrese de sustituir {Identificador de la suscripción} por el identificador de la Suscripción de Concierge que ha obtenido en el último comando.

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

Establecimiento del grupo de recursos predeterminado

Normalmente, al ejecutar un comando de la CLI de Azure, debe especificar un grupo de recursos.

El espacio aislado le proporciona un grupo de recursos predeterminado. Para que los comandos de la CLI de Azure que vienen a continuación sean más fáciles de ejecutar, aquí se establece el grupo de recursos predeterminado.

Ejecute Set-AzDefault para establecer el grupo de recursos predeterminado.

Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>

Nota:

Normalmente, al usar PowerShell para implementar recursos en Azure, debe especificar un grupo de recursos. Para omitir este requisito, establezca el contexto de la implementación usando Set-AzDefault.

Cómo es una implementación de máquina virtual típica

Al implementar una máquina virtual, tenga en cuenta que hay varios recursos que deben implementarse con ella para que funcione.

A continuación, se muestra un breve resumen de los tipos de recursos que normalmente deben implementarse con una máquina virtual:

  • Microsoft.Storage/storageAccounts. Una cuenta de almacenamiento proporciona espacio en disco para el sistema operativo y los archivos.
  • Microsoft.Network/publicIPAddresses. Una dirección IP pública le permite conectarse a la máquina virtual desde Internet.
  • Microsoft.Network/networkSecurityGroups. Un grupo de seguridad de red contiene reglas para controlar el tráfico entrante y saliente hacia y desde la red virtual.
  • Microsoft.Network/virtualNetworks. La máquina virtual debe colocarse en una red virtual. Este recurso requiere que el grupo de seguridad de red se implemente antes.
  • Microsoft.Network/networkInterfaces. Este recurso depende de otros dos recursos: la dirección IP pública y la red virtual.
  • Microsoft.Compute/virtualMachines. La máquina virtual es el recurso principal que quiere implementar. Depende de dos recursos distintos: la cuenta de almacenamiento y las interfaces de red.

Implementación de una máquina virtual Linux

Aquí puede descargar una plantilla de Resource Manager de un repositorio de GitHub que le proporcionamos. La plantilla aprovisiona una máquina virtual Linux y todos los recursos necesarios para ejecutarla.

  1. Ejecute el siguiente comando curl para descargar la plantilla de Resource Manager:

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. Ejecute el cmdlet ConvertTo-SecureString y asigne los resultados a una variable de PowerShell denominada $secure:

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    Ahora tiene una versión cifrada de la contraseña que puede pasar al siguiente script de implementación.

  3. Ejecute el comando New-AzResourceGroupDeployment para implementar la plantilla:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -adminUsername "azureuser" `
      -vmName "vm1" `
      -adminPasswordOrKey $secure
    

    El comando puede tardar unos minutos en ejecutarse. Mientras se ejecuta el comando, puede examinar la plantilla de Resource Manager en una pestaña independiente del explorador, si así lo prefiere.

    Busque por la palabra clave dependsOn para observar las dependencias de recursos. Por ejemplo, el recurso de máquina virtual depende de la interfaz de red:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

Comprobar la implementación

Compruebe que la máquina virtual está aprovisionada y se puede conectar a través de SSH. Para ello:

  1. Ejecute el comando Invoke-Expression para conectarse a la máquina virtual a través de SSH:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    Cuando se le solicite, escriba yes para continuar con la conexión. A continuación, escriba la contraseña de administrador, insecurepassword123!.

    Importante

    En la práctica, mantenga las contraseñas seguras. También puede usar la autenticación de clave pública, que suele ser más segura que el empleo de contraseñas.

  2. En la conexión SSH a la máquina virtual, ejecute hostname para imprimir el nombre de host de la máquina virtual:

    hostname
    

    Verá el nombre de host interno de la máquina virtual vm1:

    vm1
    
  3. Ejecute exit para salir de la sesión de SSH.

    exit
    

Enhorabuena, ha implementado correctamente una máquina virtual Linux mediante una plantilla de Resource Manager. Una máquina virtual es un tipo de recurso común que incluye recursos dependientes.

Configurar

Aquí, abrirá Visual Studio Code, creará una sesión de terminal y se conectará a la suscripción de Azure proporcionada por el entorno de espacio aislado de Azure gratuito.

Estas tareas de configuración se deben realizar una vez durante este módulo. Si sale de la sesión o se desconecta en un ejercicio posterior, puede volver a consultar estos pasos.

Abrir un shell en Visual Studio Code

  1. Abra Visual Studio Code.

  2. Abra una ventana de terminal mediante el menú Terminal.

  3. Si en el menú desplegable se muestra el shell preferido (Bash o zsh, por ejemplo), puede pasar directamente a la sección siguiente.

  4. En caso contrario, seleccione la lista desplegable y elija Seleccionar el shell predeterminado.

  5. Seleccione el tipo de shell que prefiera.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Seleccione + en el terminal para crear un terminal con el tipo de shell seleccionado.

Inicio de sesión en Azure

  1. En el terminal, ejecute az login:

    az login
    

    aparece una ventana del explorador.

  2. Seleccione la cuenta que usó para activar el espacio aislado y cierre la ventana del explorador cuando se le solicite.

Establecimiento de la suscripción activa

Ejecute el siguiente comando az account set para establecer el entorno de espacio aislado de Azure como la suscripción activa:

az account set -s "Concierge Subscription"

Nota:

Si el comando da error, ejecute az account list --refresh --all y vuelva a ejecutar el comando az account set.

Establecimiento del grupo de recursos predeterminado

Normalmente, al ejecutar un comando de la CLI de Azure, debe especificar un grupo de recursos.

El espacio aislado le proporciona un grupo de recursos predeterminado. Para que los comandos de la CLI de Azure que vienen a continuación sean más fáciles de ejecutar, aquí se establece el grupo de recursos predeterminado.

Ejecute el siguiente comando az configure para establecer el grupo de recursos predeterminado:

az configure --defaults group=<rgn>resource group name</rgn>

Cómo es una implementación de máquina virtual típica

Al implementar una máquina virtual, tenga en cuenta que hay varios recursos que deben implementarse con ella para que funcione.

A continuación, se muestra un breve resumen de los tipos de recursos que normalmente deben implementarse con una máquina virtual:

  • Microsoft.Storage/storageAccounts. Una cuenta de almacenamiento proporciona espacio en disco para el sistema operativo y los archivos.
  • Microsoft.Network/publicIPAddresses. Una dirección IP pública le permite conectarse a la máquina virtual desde Internet.
  • Microsoft.Network/networkSecurityGroups. Un grupo de seguridad de red contiene reglas para controlar el tráfico entrante y saliente hacia y desde la red virtual.
  • Microsoft.Network/virtualNetworks. La máquina virtual debe colocarse en una red virtual. Este recurso requiere que el grupo de seguridad de red se implemente antes.
  • Microsoft.Network/networkInterfaces. Este recurso depende de otros dos recursos: la dirección IP pública y la red virtual.
  • Microsoft.Compute/virtualMachines. La máquina virtual es el recurso principal que quiere implementar. Depende de dos recursos distintos: la cuenta de almacenamiento y las interfaces de red.

Implementación de una máquina virtual Linux

Aquí puede descargar una plantilla de Azure Resource Manager (ARM) de un repositorio de GitHub que le proporcionamos. La plantilla aprovisiona una máquina virtual Linux y todos los recursos necesarios para ejecutarla.

  1. Ejecute el siguiente comando wget para descargar la plantilla de Resource Manager:

    wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
    

    Si no tiene instalado wget, puede ejecutar este comando curl:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. Ejecute el comando az deployment group create para implementar la plantilla:

    az deployment group create \
      --template-file azuredeploy.json \
      --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
    

    El comando puede tardar unos minutos en ejecutarse. Mientras se ejecuta el comando, puede examinar la plantilla de Resource Manager en una pestaña independiente del explorador, si así lo prefiere.

    Busque por la palabra clave dependsOn para observar las dependencias de recursos. Por ejemplo, el recurso de máquina virtual depende de la interfaz de red:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

Comprobar la implementación

Compruebe que la máquina virtual está aprovisionada y se puede conectar a través de SSH. Para ello:

  1. Ejecute el siguiente comando az deployment group list para mostrar los grupos de implementación de su suscripción:

    az deployment group list --output table
    

    Verá un grupo de implementación, denominado azuredeploy:

    Name         ResourceGroup                               State      Timestamp                         Mode
    -----------  ------------------------------------------  ---------  --------------------------------  -----------
    azuredeploy  learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8  Succeeded  2020-11-24T17:55:39.762517+00:00  Incremental
    
  2. Ejecute el siguiente comando az deployment group show para mostrar el comando SSH que puede usar para conectarse a la máquina virtual:

    az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv
    

    La plantilla de Resource Manager define esta propiedad en la sección output. Este es un ejemplo:

    ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
    
  3. Vuelva a ejecutar el comando, esta vez con la sintaxis $() para ejecutar el comando SSH:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    Cuando se le solicite, escriba yes para continuar con la conexión. A continuación, escriba la contraseña de administrador, insecurepassword123!.

    Importante

    En la práctica, mantenga las contraseñas seguras. También puede usar la autenticación de clave pública, que suele ser más segura que el empleo de contraseñas.

  4. En la conexión SSH a la máquina virtual, ejecute hostname para imprimir el nombre de host de la máquina virtual:

    hostname
    

    Verá el nombre de host interno de la máquina virtual vm1:

    vm1
    
  5. Ejecute exit para salir de la sesión de SSH.

    exit
    

Enhorabuena, ha implementado correctamente una máquina virtual Linux mediante una plantilla de Resource Manager. Una máquina virtual es un tipo de recurso común que incluye recursos dependientes.