Criar VM e Configurar como Web Host
📋 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
✅ Pré-requisitos
- Uma subscrição Azure ativa
- Azure CLI instalado ou Azure Cloud Shell (BASH)
📁 Task 1: Criar um Resource Group
Primeiro, faça login no Portal Azure e abra o Cloud Shell.
Acesse o Portal Azure e faça login.
Clique no ícone do Cloud Shell para abri-lo.
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
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 updatepara baixar as informações de pachotes mais recentes - Instala o Nginx
- Configura a home page em
/var/www/html/index.htmlcom 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
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
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.
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!
💡 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:
Na página inicial do Azure, selecione Resource groups.
Selecione IntroAzureRG.
Selecione Delete resource group.
Marque Apply force delete for selected Virtual machines.
Digite para confirmar:
IntroAzureRG
Clique em Delete e confirme.