Ejercicio: Extensión de la plantilla de inicio rápido para implementar un sitio web básico
Ahora que se ha definido el recurso de plantilla de la extensión de script personalizado que configura Nginx en la máquina virtual, vamos a agregarlo a la plantilla de máquina virtual existente y a ejecutarlo.
Este es el aspecto que tendrá la configuración de Nginx.
Crear la aplicación
Aquí descargaremos la plantilla y la modificaremos.
En Cloud Shell, ejecute
curl
para descargar la plantilla de GitHub que usamos anteriormente.curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.json > azuredeploy.json
Abra azuredeploy.json a través del Editor de Cloud Shell.
code azuredeploy.json
En el archivo, busque la sección
resources
. Agregue el recurso de extensión de script personalizado (creado en la parte anterior) al inicio de esta sección y luego guarde el archivo.Incluimos aquí el código a modo de recordatorio.
{ "name": "[concat(parameters('vmName'),'/', 'ConfigureNginx')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "location": "[parameters('location')]", "properties": { "publisher": "Microsoft.Azure.Extensions", "type": "customScript", "typeHandlerVersion": "2.0", "autoUpgradeMinorVersion": true, "settings": { "fileUris": [ "https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh" ] }, "protectedSettings": { "commandToExecute": "./configure-nginx.sh" } }, "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachines/', parameters('vmName'))]" ] },
Fíjese en el carácter de coma (
,
) del final, que es necesario para separar recursos. El orden en el que se definan los recursos no importa, pero aquí se agregará al inicio por motivos de simplicidad.En el archivo, en
resources
busque la sección "Microsoft.Network/networkSecurityGroups". En "securityRules", agregue una nueva regla para abrir el puerto 80. Use la regla siguiente:{ "name":"allow_80", "properties": { "priority": 101, "protocol": "TCP", "access": "Allow", "direction": "Inbound", "sourceAddressPrefix": "Internet", "sourcePortRange": "*", "destinationAddressPrefix": "*", "destinationPortRange": "80" } },
Si se bloquea o quiere contrastar el trabajo, puede descargar el archivo resultante desde GitHub.
curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-build-azure-vm-templates/master/linux/azuredeploy.json > azuredeploy.json
Ya ha terminado de editar los archivos. Seleccione los puntos suspensivos en la esquina y Guardar.
Para cerrar el editor, haga clic en los puntos suspensivos situados en la esquina y, luego, seleccione Cerrar editor.
Comprobar la plantilla
Aquí validaremos la plantilla desde la CLI.
En la práctica, antes de ejecutar una implementación de prueba podríamos realizar pruebas de detección de errores o ejecutar la plantilla con el visualizador de Azure Resource Manager.
Al igual que hicimos anteriormente, ejecute az deployment group validate
para validar la plantilla.
az deployment group validate \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.json \
--parameters adminUsername=$USERNAME \
--parameters authenticationType=password \
--parameters adminPasswordOrKey=$PASSWORD \
--parameters dnsLabelPrefix=$DNS_LABEL_PREFIX
Observe que esta vez usamos el argumento --template-file
y no --template-uri
, puesto que estamos haciendo referencia a un archivo local.
Si ve errores, vuelva a la parte anterior o compare su código con la implementación de referencia.
Implementar la plantilla
Aquí ejecutaremos un comando similar al que ejecutamos anteriormente para implementar la plantilla. Como no hemos modificado ningún recurso existente (la máquina virtual, la configuración de red o la cuenta de almacenamiento), Resource Manager no realiza ninguna acción en esos recursos. Solamente aplicará el recurso que acabamos de agregar, que ejecuta la extensión de script personalizado que instala Nginx en la máquina virtual.
Ejecute az deployment group create
para actualizar la implementación.
az deployment group create \
--name MyDeployment \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.json \
--parameters adminUsername=$USERNAME \
--parameters authenticationType=password \
--parameters adminPasswordOrKey=$PASSWORD \
--parameters dnsLabelPrefix=$DNS_LABEL_PREFIX
De nuevo, fíjese en que esta vez usamos el argumento --template-file
, porque estamos haciendo referencia a un archivo local.
El comando tarda unos minutos en completarse. Veremos un gran bloque de JSON como salida, en el que se describe la implementación.
Comprobar la implementación
La implementación se ha realizado correctamente, así que vamos a ver la configuración real resultante.
Ejecute
az vm show
para obtener la dirección IP de la máquina virtual y almacene el resultado en una variable de Bash.IPADDRESS=$(az vm show \ --name simpleLinuxVM \ --resource-group $RESOURCEGROUP \ --show-details \ --query [publicIps] \ --output tsv)
Ejecute
curl
para acceder al servidor web.curl $IPADDRESS
Veremos esto.
<html><body><h2>Welcome to Azure! My name is simpleLinuxVM.</h2></body></html>
En otra pestaña del explorador, vaya a su sitio web.
Primero, imprima la dirección IP.
echo $IPADDRESS
En otra pestaña del explorador, vaya a la dirección IP que aparece. Verá algo parecido al siguiente mensaje:
¡Bien hecho! Al usar el recurso de extensión de script personalizado, podrá ampliar la implementación para llevar a cabo más cosas.
Ahora que hemos definido el recurso de plantilla de la extensión de script personalizado que configura IIS en la máquina virtual, vamos a agregarlo a la plantilla de máquina virtual existente y a ejecutarlo.
Crear la aplicación
Aquí descargaremos la plantilla y la modificaremos.
En Cloud Shell, ejecute
curl
para descargar la plantilla de GitHub que usamos anteriormente.curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.json > azuredeploy.json
Abra azuredeploy.json a través del Editor de Cloud Shell.
code azuredeploy.json
En el archivo, busque la sección
resources
. Agregue el recurso de extensión de script personalizado que ha creado en la parte anterior al inicio de esta sección.Aquí se incluye el código a modo de recordatorio.
{ "name": "[concat(parameters('vmName'),'/', 'ConfigureIIS')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "location": "[parameters('location')]", "properties": { "publisher": "Microsoft.Compute", "type": "CustomScriptExtension", "typeHandlerVersion": "1.9", "autoUpgradeMinorVersion": true, "settings": { "fileUris": [ "https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-iis.ps1" ] }, "protectedSettings": { "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File configure-iis.ps1" } }, "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachines/', parameters('vmName'))]" ] },
Fíjese en el carácter de coma (
,
) del final, que es necesario para separar recursos. El orden en el que se definan los recursos no importa, pero aquí se agregará al inicio por motivos de simplicidad.En el archivo, busque
securityRules
en la secciónresources
. Agregue una sección para abrir el puerto 80.{ "name": "allow_80", "properties": { "priority": 101, "access": "Allow", "direction": "Inbound", "destinationPortRange": "80", "protocol": "Tcp", "sourcePortRange": "*", "sourceAddressPrefix": "Internet", "destinationAddressPrefix": "*" } }
Si se bloquea o quiere contrastar el trabajo, puede descargar el archivo resultante desde GitHub.
curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-build-azure-vm-templates/master/windows/azuredeploy.json > azuredeploy.json
Ya ha terminado de editar los archivos. Seleccione los puntos suspensivos en la esquina y Guardar.
Para cerrar el editor, haga clic en los puntos suspensivos situados en la esquina y, luego, seleccione Cerrar editor.
Comprobar la plantilla
Aquí validaremos la plantilla desde la CLI.
En la práctica, antes de ejecutar una implementación de prueba podríamos realizar pruebas de detección de errores o ejecutar la plantilla con el visualizador de Azure Resource Manager.
Al igual que hicimos anteriormente, ejecute az deployment group validate
para validar la plantilla.
az deployment group validate \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.json \
--parameters adminUsername=$USERNAME \
--parameters adminPassword=$PASSWORD \
--parameters dnsLabelPrefix=$DNS_LABEL_PREFIX
Observe que esta vez usamos el argumento --template-file
y no --template-uri
, puesto que estamos haciendo referencia a un archivo local.
Si ve errores, vuelva a la parte anterior o compare su código con la implementación de referencia.
Implementar la plantilla
Aquí ejecutaremos un comando similar al que ejecutamos anteriormente para implementar la plantilla. Como no hemos modificado ningún recurso existente (la máquina virtual, la configuración de red o la cuenta de almacenamiento), Resource Manager no realiza ninguna acción en esos recursos. Solamente aplicará el recurso que acabamos de agregar, que ejecuta la extensión de script personalizado que instala IIS en la máquina virtual.
Ejecute az deployment group create
para actualizar la implementación.
az deployment group create \
--name MyDeployment \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.json \
--parameters adminUsername=$USERNAME \
--parameters adminPassword=$PASSWORD \
--parameters dnsLabelPrefix=$DNS_LABEL_PREFIX
De nuevo, fíjese en que esta vez usamos el argumento --template-file
, porque estamos haciendo referencia a un archivo local.
El comando tarda unos minutos en completarse. Veremos un gran bloque de JSON como salida, en el que se describe la implementación.
Comprobar la implementación
La implementación se ha realizado correctamente, así que vamos a ver la configuración real resultante.
Ejecute
az vm show
para obtener la dirección IP de la máquina virtual y almacene el resultado en una variable de Bash.IPADDRESS=$(az vm show \ --name simple-vm \ --resource-group $RESOURCEGROUP \ --show-details \ --query [publicIps] \ --output tsv)
Ejecute
curl
para acceder al servidor web.curl $IPADDRESS
Veremos esto.
<html><body><h2>Welcome to Azure! My name is simple-vm.</h2></body></html>
En otra pestaña del explorador, vaya a su sitio web.
Primero, imprima la dirección IP.
echo $IPADDRESS
En otra pestaña del explorador, vaya a la dirección IP que aparece. Veremos esto.
¡Bien hecho! Al usar el recurso de extensión de script personalizado, podrá ampliar la implementación para llevar a cabo más cosas.
¿Necesita ayuda? Consulte nuestra guía de solución de problemas o notifique un problema para enviar comentarios específicos.