Tutorial: Implementación de extensiones de máquina virtual con plantillas de Resource Manager

Aprenda a usar extensiones de máquina virtual de Azure para realizar tareas de automatización y configuración posteriores a la implementación en máquinas virtuales de Azure. Hay muchas extensiones de máquina virtual diferentes disponibles para su uso con máquinas virtuales de Azure. En este tutorial se implementará una extensión de script personalizado desde una plantilla de Azure Resource Manager (ARM) para ejecutar un script de PowerShell en una máquina virtual Windows. El script instala un servidor web en la máquina virtual.

En este tutorial se describen las tareas siguientes:

  • Preparación de un script de PowerShell.
  • Apertura de una plantilla de inicio rápido
  • Edición de la plantilla
  • Implementación de la plantilla

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Prerrequisitos

Para completar este artículo, necesitará lo siguiente:

Preparación de un script de PowerShell.

Puede usar un script de PowerShell en línea o un archivo de script. En este tutorial se muestra cómo usar un archivo de script. Un script de PowerShell con el siguiente contenido se comparte desde GitHub:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Si elige publicar el archivo en su propia ubicación, actualice el elemento fileUri de la plantilla más adelante en el tutorial.

Apertura de una plantilla de inicio rápido

Plantillas de inicio rápido de Azure es un repositorio de plantillas de Azure Resource Manager. En lugar de crear una plantilla desde cero, puede buscar una plantilla de ejemplo y personalizarla. La plantilla que se usa en este tutorial se denomina Deploy a simple Windows VM.

  1. En Visual Studio Code, seleccione Archivo>Abrir archivo.

  2. En el cuadro Nombre de archivo, pegue la siguiente dirección URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Para abrir el archivo, seleccione Abrir. La plantilla define cinco recursos:

  4. Guarde una copia del archivo en su equipo local con el nombre azuredeploy.json; para ello, seleccione Archivo>Guardar como.

Edición de la plantilla

Agregue un recurso de extensión de máquina virtual a la plantilla existente con el siguiente contenido:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2021-04-01",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
    }
  }
}

Si necesita más información acerca de la definición de este recurso, consulte la referencia de la extensión. Estos son algunos elementos importantes:

  • name: Dado que el recurso de extensión es un recurso secundario del objeto de máquina virtual, el nombre debe tener el prefijo del nombre de máquina virtual. Consulte Establecimiento del nombre y el tipo de recursos secundarios.
  • dependsOn: Cree el recurso de extensión después de haber creado la máquina virtual.
  • fileUris: son las ubicaciones donde se almacenan los archivos de script. Si elige no utilizar la ubicación que se proporciona, deberá actualizar los valores.
  • commandToExecute: Este comando invoca el script.

Para usar un script en línea, quite fileUris y actualice commandToExecute a:

powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)

Este script en línea también actualiza el contenido de iisstart.html.

También debe abrir el puerto HTTP para poder acceder al servidor web.

  1. Busque securityRules en la plantilla.

  2. Agregue la siguiente regla junto a default-allow-3389.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

Implementación de la plantilla

Para conocer el procedimiento de implementación, consulte la sección Implementación de la plantilla del Tutorial: Creación de plantillas de Resource Manager con recursos dependientes. Se recomienda usar una contraseña generada para la cuenta de administrador de la máquina virtual. Consulte la sección Requisitos previos de este artículo.

En Cloud Shell, ejecute el siguiente comando para recuperar la dirección IP pública de la máquina virtual:

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Pegue la dirección IP en un explorador web. Se abre la página de bienvenida predeterminada de Internet Information Services (IIS):

Captura de pantalla de la página de bienvenida de Internet Information Services.

Limpieza de recursos

Cuando ya no necesite los recursos de Azure que implementó, elimine el grupo de recursos para limpiarlos.

  1. En Azure Portal, en el panel de la izquierda, seleccione Grupo de recursos.
  2. En el campo Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. Seleccione el nombre del grupo de recursos. Se muestran seis recursos en el grupo de recursos.
  4. En el menú superior, seleccione Eliminar grupo de recursos.

Pasos siguientes

En este tutorial, ha implementado una máquina virtual y una extensión de virtual machine. La extensión ha instalado al servidor web de IIS en la máquina virtual. Para aprender a usar la extensión de Azure SQL Database para importar un archivo BACPAC, consulte: