Skip to content

michalswi/azure-vm-behind-lb

Repository files navigation

Adjust values here if needed for:

  • VM size, by default it's Standard_B1s
  • Azure region, by default it's West Europe
  • Public IP, your public IP address allowed to ssh to VM

whatismyip GitHub link.

# Log in to Azure

az login


# Generate ssh key

ssh-keygen -t rsa -b 2048 -N "" -f ./demo -C "demo@demon"


# Deploy Azure LB and VM

PUB_IP=<your_public_facing_ip>
terraform init
terraform apply -var public_ip=$PUB_IP


# Verify ports

$ sudo nmap -v -Pn -p 22,80,443 <LB_public_IP>
(...)
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  closed http
443/tcp closed https


# Register your public IP 

$ NAME=demo-$RANDOM
$ ./fqdn.sh <LB_public_IP> $NAME
<$NAME>.westeurope.cloudapp.azure.com


# Configure docker on VM

$ ssh -i <priv_key> -l demo <LB_public_IP>
demo@demon:~$ sudo usermod -aG docker $(whoami)
demo@demon:~$ exit        // log out from VM and log in

$ ssh -i <priv_key> -l demo <LB_public_IP>
demo@demon:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


# Run whatismyip app

demo@demon:~$ git clone https://github.com/michalswi/whatismyip.git
demo@demon:~$ cd whatismyip

demo@demon:~$ SERVER_PORT=80 make docker-run-bridge


# Test (only HTTP no HTTPS)

$ sudo nmap -v -Pn -p 22,80 <LB_public_IP>
(...)
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  open   http
443/tcp closed https

curl $NAME.westeurope.cloudapp.azure.com
curl $NAME.westeurope.cloudapp.azure.com/ip

OR

firefox $NAME.westeurope.cloudapp.azure.com
firefox $NAME.westeurope.cloudapp.azure.com/ip


# Destroy Azure resources

terraform destroy -auto-approve -var public_ip=$PUB_IP
./clear.sh