|
| 1 | +# Crear una máquina virtual para el frontend en Angular |
| 2 | +Ahora vamos a crear la máquina virtual para el frontend. Para ello, vamos a necesitar las siguientes variables de entorno: |
| 3 | + |
| 4 | +```bash |
| 5 | +# Frontend VM on Azure |
| 6 | +FRONTEND_VM_NAME="frontend-vm" |
| 7 | +FRONTEND_VM_IMAGE="MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest" |
| 8 | +FRONTEND_VM_ADMIN_USERNAME="frontendadmin" |
| 9 | +FRONTEND_VM_ADMIN_PASSWORD="fr0nt#nd@dmin123" |
| 10 | +FRONTEND_VM_NSG_NAME="frontend-vm-nsg" |
| 11 | +``` |
| 12 | + |
| 13 | +o si estás en Windows: |
| 14 | + |
| 15 | +```pwsh |
| 16 | +# Frontend VM on Azure |
| 17 | +$FRONTEND_VM_NAME="frontend-vm" |
| 18 | +$FRONTEND_VM_IMAGE="MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest" |
| 19 | +$FRONTEND_VM_ADMIN_USERNAME="frontendadmin" |
| 20 | +$FRONTEND_VM_ADMIN_PASSWORD="fr0nt#nd@dmin123" |
| 21 | +$FRONTEND_VM_NSG_NAME="frontend-vm-nsg" |
| 22 | +``` |
| 23 | + |
| 24 | +Con ellas ya podemos crear la máquina virtual de la misma forma que el resto: |
| 25 | + |
| 26 | +```bash |
| 27 | +echo -e "Create a frontend vm named $FRONTEND_VM_NAME with image $FRONTEND_VM_IMAGE" |
| 28 | + |
| 29 | +FQDN_FRONTEND_VM=$(az vm create \ |
| 30 | +--resource-group $RESOURCE_GROUP \ |
| 31 | +--name $FRONTEND_VM_NAME \ |
| 32 | +--image $FRONTEND_VM_IMAGE \ |
| 33 | +--admin-username $FRONTEND_VM_ADMIN_USERNAME \ |
| 34 | +--admin-password $FRONTEND_VM_ADMIN_PASSWORD \ |
| 35 | +--vnet-name $VNET_NAME \ |
| 36 | +--subnet $FRONTEND_SUBNET_NAME \ |
| 37 | +--public-ip-address-dns-name tour-of-heroes-frontend-vm \ |
| 38 | +--nsg $FRONTEND_VM_NSG_NAME \ |
| 39 | +--size $VM_SIZE --query "fqdns" -o tsv) |
| 40 | +``` |
| 41 | + |
| 42 | +o si estás en Windows: |
| 43 | + |
| 44 | +```pwsh |
| 45 | +echo -e "Create a frontend vm named $FRONTEND_VM_NAME with image $FRONTEND_VM_IMAGE" |
| 46 | +
|
| 47 | +$FQDN_FRONTEND_VM=az vm create ` |
| 48 | +--resource-group $RESOURCE_GROUP ` |
| 49 | +--name $FRONTEND_VM_NAME ` |
| 50 | +--image $FRONTEND_VM_IMAGE ` |
| 51 | +--admin-username $FRONTEND_VM_ADMIN_USERNAME ` |
| 52 | +--admin-password $FRONTEND_VM_ADMIN_PASSWORD ` |
| 53 | +--vnet-name $VNET_NAME ` |
| 54 | +--subnet $FRONTEND_SUBNET_NAME ` |
| 55 | +--public-ip-address-dns-name tour-of-heroes-frontend-vm ` |
| 56 | +--nsg $FRONTEND_VM_NSG_NAME ` |
| 57 | +--size $VM_SIZE --query "fqdns" -o tsv |
| 58 | +``` |
| 59 | + |
| 60 | +Para que veas que la ejecución de scripts no es solo para máquinas Linux y que también se puede hacer con Windows, vamos a utilizar un script en PowerShell para poder configurar también esta máquina con un IIS y con lo que Angular necesita para poder funcionar. |
| 61 | + |
| 62 | +```bash |
| 63 | +echo -e "Execute script to install IIS and deploy tour-of-heroes-angular SPA" |
| 64 | +az vm run-command invoke \ |
| 65 | +--resource-group $RESOURCE_GROUP \ |
| 66 | +--name $FRONTEND_VM_NAME \ |
| 67 | +--command-id RunPowerShellScript \ |
| 68 | +--scripts @scripts/install-tour-of-heroes-angular.ps1 \ |
| 69 | +--parameters "api_url=http://$FQDN_API_VM/api/hero" "release_url=https://github.com/0GiS0/tour-of-heroes-angular/releases/download/1.1.4/dist.zip" |
| 70 | +``` |
| 71 | + |
| 72 | +o si estás en Windows: |
| 73 | + |
| 74 | +```pwsh |
| 75 | +echo -e "Execute script to install IIS and deploy tour-of-heroes-angular SPA" |
| 76 | +
|
| 77 | +az vm run-command invoke ` |
| 78 | +--resource-group $RESOURCE_GROUP ` |
| 79 | +--name $FRONTEND_VM_NAME ` |
| 80 | +--command-id RunPowerShellScript ` |
| 81 | +--scripts @scripts/install-tour-of-heroes-angular.ps1 ` |
| 82 | +--parameters "api_url=http://$FQDN_API_VM/api/hero" "release_url=https://github.com/0GiS0/tour-of-heroes-angular/releases/download/1.1.4/dist.zip" |
| 83 | +``` |
| 84 | + |
| 85 | +En este ejemplo he desplegado la aplicación en otro puerto, en el 8080, para que no haya conflicto con el IIS que se instala por defecto en el puerto 80. Para ello, para todo esto utilizamos el script `install-tour-of-heroes-angular.ps1` que se encuentra en la carpeta `scripts` de este repositorio.: |
| 86 | + |
| 87 | +Lo último que nos queda es habilitar los puertos 80 y 8080 en el NSG de la máquina virtual del frontend: |
| 88 | + |
| 89 | +```bash |
| 90 | +echo -e "Frontend vm created with FQDN $FQDN_FRONTEND_VM" |
| 91 | + |
| 92 | +az network nsg rule create \ |
| 93 | +--resource-group $RESOURCE_GROUP \ |
| 94 | +--nsg-name $FRONTEND_VM_NSG_NAME \ |
| 95 | +--name AllowHttp \ |
| 96 | +--priority 1002 \ |
| 97 | +--destination-port-ranges 80 \ |
| 98 | +--direction Inbound |
| 99 | + |
| 100 | +az network nsg rule create \ |
| 101 | +--resource-group $RESOURCE_GROUP \ |
| 102 | +--nsg-name $FRONTEND_VM_NSG_NAME \ |
| 103 | +--name Allow8080 \ |
| 104 | +--priority 1003 \ |
| 105 | +--destination-port-ranges 8080 \ |
| 106 | +--direction Inbound |
| 107 | +``` |
| 108 | + |
| 109 | +o si estás en Windows: |
| 110 | + |
| 111 | +```pwsh |
| 112 | +echo -e "Frontend vm created with FQDN $FQDN_FRONTEND_VM" |
| 113 | +
|
| 114 | +az network nsg rule create ` |
| 115 | +--resource-group $RESOURCE_GROUP ` |
| 116 | +--nsg-name $FRONTEND_VM_NSG_NAME ` |
| 117 | +--name AllowHttp ` |
| 118 | +--priority 1002 ` |
| 119 | +--destination-port-ranges 80 ` |
| 120 | +--direction Inbound |
| 121 | +
|
| 122 | +az network nsg rule create ` |
| 123 | +--resource-group $RESOURCE_GROUP ` |
| 124 | +--nsg-name $FRONTEND_VM_NSG_NAME ` |
| 125 | +--name Allow8080 ` |
| 126 | +--priority 1003 ` |
| 127 | +--destination-port-ranges 8080 ` |
| 128 | +--direction Inbound |
| 129 | +``` |
| 130 | + |
| 131 | +Para probar que todo funciona, abre un navegador y accede a la dirección `http://<FQDN_FRONTEND_VM>:8080` y deberías ver la aplicación Angular funcionando: |
| 132 | + |
| 133 | + |
0 commit comments