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.
Requisitos previos
Para completar este artículo, necesitará lo siguiente:
Visual Studio Code con la extensión Resource Manager Tools. Consulte Quickstart: Creación de plantillas de ARM mediante Visual Studio Code.
Para aumentar la seguridad, utilice una contraseña generada para la cuenta de administrador de máquina virtual. Puede usar Azure Cloud Shell ejecutar el siguiente comando en PowerShell o Bash:
openssl rand -base64 32
Para más información, ejecute
man openssl rand
para abrir la página manual.Azure Key Vault está diseñado para proteger las claves criptográficas y otros secretos. Para más información, consulte el Tutorial: Integración de Azure Key Vault en una implementación de plantilla de ARM. También se recomienda actualizar la contraseña cada tres meses.
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.
En Visual Studio Code, seleccione Archivo>Abrir archivo.
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
Para abrir el archivo, seleccione Abrir. La plantilla define cinco recursos:
Microsoft.Compute/virtualMachines.
Resulta útil obtener cierta información básica de la plantilla antes de personalizarla.
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.
Busque
securityRules
en la plantilla.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):
Limpieza de recursos
Cuando ya no necesite los recursos de Azure que implementó, elimine el grupo de recursos para limpiarlos.
- En Azure Portal, en el panel de la izquierda, seleccione Grupo de recursos.
- En el campo Filtrar por nombre, escriba el nombre del grupo de recursos.
- Seleccione el nombre del grupo de recursos. Se muestran seis recursos en el grupo de recursos.
- 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: