CloudExpert UP

Criar VM e Configurar como Web Host

AZ-900 Intermediário 20 min Gratuito Módulo 1

📋 Visão Geral

Neste lab, você criará uma máquina virtual Linux usando Azure CLI, instalará o Nginx como web server e configurará as regras de Network Security Group (NSG) para permitir acesso HTTP.

Você irá:

  • Criar um Resource Group via Azure CLI
  • Provisionar uma VM Linux com Ubuntu 22.04
  • Instalar Nginx com Custom Script Extension
  • Entender e configurar regras de NSG
  • Criar regra para permitir HTTP na porta 80
  • Verificar o web server acessível via navegador
💡 Conceito-chave: Network Security Groups (NSGs) controlam o tráfego de entrada e saída dos recursos Azure. Sem uma regra permitindo HTTP, a VM não será acessível pela web.

✅ Pré-requisitos

  • Uma subscrição Azure ativa
  • Azure CLI instalado ou Azure Cloud Shell (BASH)
⚠️ Importante: Certifique-se de usar o modo BASH no Cloud Shell para os comandos deste lab.

📁 Task 1: Criar um Resource Group

Primeiro, faça login no Portal Azure e abra o Cloud Shell.

1

Acesse o Portal Azure e faça login.

2

Clique no ícone do Cloud Shell para abri-lo.

3

Crie o resource group usando Azure CLI:

az group create --name IntroAzureRG --location centralus

🐧 Task 2: Criar uma VM Linux

Use o comando Azure CLI abaixo para criar uma VM Linux com Ubuntu 22.04:

az vm create \
  --resource-group "IntroAzureRG" \
  --name my-vm \
  --size Standard_D2s_v5 \
  --public-ip-sku Standard \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys
📝 Nota: A VM pode levar alguns minutos para ser provisionada. O nome da VM é my-vm — você irá referenciar este nome nos próximos passos.

🌐 Task 3: Instalar Nginx

Após a VM ser criada, use a Custom Script Extension para instalar o Nginx. Esta é uma forma fácil de baixar e executar scripts nas VMs Azure.

az vm extension set \
  --resource-group "IntroAzureRG" \
  --vm-name my-vm \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --version 2.1 \
  --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh"]}' \
  --protected-settings '{"commandToExecute": "./configure-nginx.sh"}'

📖 O que o script faz?

  • Executa apt-get update para baixar as informações de pachotes mais recentes
  • Instala o Nginx
  • Configura a home page em /var/www/html/index.html com uma mensagem de boas-vindas que inclui o hostname da VM

🔗 Task 4: Acessar o Web Server

Obtenha o IP da VM e tente acessar o web server:

1. Obter o IP público

IPADDRESS="$(az vm list-ip-addresses \
  --resource-group "IntroAzureRG" \
  --name my-vm \
  --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
  --output tsv)"

2. Testar com curl

curl --connect-timeout 5 http://$IPADDRESS
❌ Resultado esperado: Você verá um erro de timeout! Isso indica que a VM não está acessível na porta 80 porque o NSG não permite tráfego HTTP.
curl: (28) Connection timed out after 5001 milliseconds

3. Ver o IP (opcional — para testar no navegador)

echo $IPADDRESS

Copie o IP e abra em uma nova aba do navegador. Verá que a conexão não funciona. Mantenha esta aba aberta para depois.

🔐 Task 5: Listar Regras do NSG

O web server não estava acessível. Para entender por quê, vamos examinar as regras do NSG.

1. Listar NSGs associados à VM

az network nsg list \
  --resource-group "IntroAzureRG" \
  --query '[].name' \
  --output tsv

Saída esperada:

my-vmNSG

2. Listar regras do NSG (formato tabela)

az network nsg rule list \
  --resource-group "IntroAzureRG" \
  --nsg-name my-vmNSG \
  --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
  --output table

Saída esperada:

Name              Priority    Port    Access
-----------------  ----------  ------  --------
default-allow-ssh  1000        22      Allow
💡 Explicação: Apenas a regra default-allow-ssh existe. Ela permite conexões na porta 22 (SSH) para administração. A porta 80 (HTTP) não está permitida — por isso o web server não é acessível.

✏️ Task 6: Criar Regra de Segurança de Rede

Crie uma regra chamada allow-http que permita acesso de entrada na porta 80:

1. Criar a regra

az network nsg rule create \
  --resource-group "IntroAzureRG" \
  --nsg-name my-vmNSG \
  --name allow-http \
  --protocol tcp \
  --priority 100 \
  --destination-port-range 80 \
  --access Allow

2. Verificar a lista de regras atualizada

az network nsg rule list \
  --resource-group "IntroAzureRG" \
  --nsg-name my-vmNSG \
  --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
  --output table

Saída esperada:

Name              Priority    Port    Access
-----------------  ----------  ------  --------
default-allow-ssh  1000        22      Allow
allow-http          100        80      Allow

✅ Task 7: Acessar o Web Server Novamente

Agora que configurou o acesso na porta 80, vamos testar o web server novamente.

📝 Nota: Após atualizar o NSG, pode levar alguns instantes para as regras serem propagadas. Tente novamente com pausas entre as tentativas.

1. Testar com curl

curl --connect-timeout 5 http://$IPADDRESS

Saída esperada:

<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>

2. Testar no navegador

Atualize a aba do navegador que você abriu anteriormente com o IP da VM. Agora verá a página de boas-vindas!

🎉 Parabéns! O web server está acessível! Na prática, você pode criar um NSG independente com as regras de acesso necessárias e atribuí-lo a múltiplas VMs.

💡 Boas Práticas

  • Crie NSGs independentes com regras reutilizáveis
  • Atribua o mesmo NSG a múltiplas VMs com a mesma função
  • Use prioridades menores (números menores) para regras mais importantes

🧹 Limpeza

Para limpar seu ambiente Azure e evitar custos com VMs ociosas:

1

Na página inicial do Azure, selecione Resource groups.

2

Selecione IntroAzureRG.

3

Selecione Delete resource group.

4

Marque Apply force delete for selected Virtual machines.

5

Digite para confirmar:

IntroAzureRG
6

Clique em Delete e confirme.