En ocasiones, como pruebas de balanceo de tráfico http, puede resultarnos muy útil automatizar la creación de nuestros recursos.
Con ese foco, os dejamos los comandos necesarios para generar una máquina virtual con servidor web instalado y corriendo con mensaje sencillo personalizado. Utilizaremos para ello la funcionalidad Set-AzVMExtension
Las especificaciones de la vm son las siguientes:
- Nombre: vm-iis01
- SKU: Standard D2s v3 (2 vcpus, 8 GiB memory)
- Sistema Operativo Guest: Windows Server 2022 Datacenter Azure Edition
- Servidor web IIS instalado y corriendo instancia sobre puerto tcp/80
- Puertos abiertos contra la ip_publica: tcp/80, tcp/3389 (rdp)
Para su ejecución, incluiremoslos siguientes comandos en un archivo .ps1 y lo ejecutaremos desde la shell (tipo pwsh).
Nota: las credenciales del guest (user/pass) se solicitan por pantalla.
#creando nueva vm
$credenciales_guest= Get-Credential
New-AzVm -ResourceGroupName "backend-iis-rg" -Name "vm-iis01" -Location "west US" -VirtualNetworkName "vmiis01-vnet" -SubnetName "vmiis01-snet" -SecurityGroupName "vmiis01-nsg" -PublicIpAddressName "vmiis01-pip" -OpenPorts 80,3389 -Credential $credenciales_guest
#instalando IIS. Muestra el nombre de host por defecto.
Set-AzVMExtension -ResourceGroupName "backend-iis-rg" -ExtensionName "IIS" -VMName "vm-iis01" -Location "westUS" -Publisher Microsoft.Compute -ExtensionType CustomScriptExtension -TypeHandlerVersion 1.8 -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
#salida del deploy. IP pública de la vm para probar el acceso al webserber
Get-AzPublicIPAddress -ResourceGroupName "backend-iis-rg" -Name "vmiis01-pip" | select IpAddress
Al conectarnos a la IP publica configurada en la creación y proporcionada por la salida del script, accederemos al servidor web corriendo en el puerto tcp/80 y mostrará como página por defecto su $hostname. Muy útil si generamos varias máquinas con este método y las balancear probando el failover o la recuperación de nuestro website. Veremos como el $hostname va cambiando.
Al terminar, recordar, limpiar nuestro tenant. (Orden, ahorro de costos… 😉
Os animamos a compartir con nosotros vuestras opiniones en X: @mundoazure