Provisionamento de uma VM IaaS no Azure (Região Brazil South – São Paulo)
Este repositório contém um conjunto de arquivos Terraform que criam, configuram e post‑configuram uma máquina virtual Windows no Microsoft Azure, utilizando disco Premium SSD.
A VM recebe hostname, pasta compartilhada e o IIS pré‑instalado por meio de um script PowerShell executado na inicialização.
│ azure-iaas/
├── main.tf # Infraestrutura Azure: RG, VNET, NIC, VM
├── variables.tf # Variáveis parametrizáveis
├── outputs.tf # Saídas importantes (ex: IP público)
└── custom_script.ps1 # Script PowerShell executado na VM
| Recurso | O que acontece |
|---|---|
| Resource Group e Virtual Network | São criados com sub‑rede única. |
| VM Windows (Standard D2s_v3) | Disco OS Premium SSD de 128 GB. |
| Hostname | Alterado para SRV-SAO-PAULO. |
| Pasta compartilhada | C:\Dados criada e compartilhada como \\SRV-SAO-PAULO\Dados. |
| IIS | Instalado como feature extra, permitindo teste rápido de um site web. |
| IP público | Exportado via terraform output vm_public_ip. |
| Item | Detalhe |
|---|---|
| Conta Azure | Permissões para criar RG, VNet, NIC, VM e extensões. |
| Terraform | Versão ≥ 1.3 (verifique com terraform -v). |
| Azure CLI | Instalado e autenticado (az login). |
| PowerShell | Para revisar/ajustar o script localmente (PowerShell 7+ recomendado). |
| (Opcional) Azure Key Vault | Para armazenar a senha do administrador de forma segura. |
| Variável | Descrição | Exemplo |
|---|---|---|
admin_username |
Usuário administrador da VM. | azureuser |
admin_password |
Senha do administrador (alterar antes de usar). | P@ssword123456! |
region |
Região Azure onde o recurso será criado. | Brazil South |
vm_size |
SKU da VM. | Standard_D2s_v3 |
disk_size_gb |
Tamanho do disco OS (GB). | 128 |
vm_name |
Nome lógico da VM (usado também como hostname). | srv-sao-paulo |
Importante: nunca commit a senha em repositórios públicos. Em produção, recupere‑a de um Key Vault ou de variáveis de ambiente.
git clone https://github.com/seu-usuario/azure-iaas.git cd azure-iaas
cat > terraform.tfvars <<EOF admin_username = "azureuser" admin_password = "SuaSenhaSegura123!" EOF
terraform init
terraform plan -var-file="terraform.tfvars"
terraform apply -var-file="terraform.tfvars"
Apply complete! Resources: X added, 0 changed, 0 destroyed.
Outputs: vm_public_ip = 20.45.123.89
Com o IP exibido, conecte‑se via RDP: Ex.: mstsc /v:20.45.123.89 Usuário: o definido em admin_username Senha: a que você informou em terraform.tfvars
O script é copiado para C:\Temp\custom_script.ps1 e executado logo após a VM estar pronta (via VM Extension ou provisioner WinRM, conforme configurado em main.tf).
Este script é transferido automaticamente para a VM e executado no provisionamento. Ele realiza:
Alteração do hostname para SRV-SAO-PAULO.
Criação da pasta C:\Dados.
Compartilhamento da pasta como \\Dados.
Instalação do IIS para teste rápido de serviço web.
Armazene a senha em Azure Key Vault e recupere‑a com azurerm_key_vault_secret.
Crie um Network Security Group (NSG) permitindo RDP apenas de IPs confiáveis.
Adicione tags como environment = "dev" e owner = "team-iaas" a todos os recursos.
Habilite Azure Backup para o disco OS.
Envie logs de diagnóstico da VM e do NSG para um Log Analytics Workspace.
Caso precise de múltiplas instâncias, migre para um Virtual Machine Scale Set.
Use Update Management (Azure Automation) para aplicar patches automaticamente.
Troque azurerm_windows_virtual_machine por azurerm_linux_virtual_machine e converta custom_script.ps1 para Bash.
Este exemplo está disponibilizado “as‑is” sob a licença MIT. Consulte o arquivo LICENSE para detalhes e sinta‑se à vontade para adaptar o código às políticas de segurança da sua organização.
Links úteis Provider AzureRM – Terraform Registry: https://registry.terraform.io/providers/hashicorp/azurerm/latest
Documentação oficial da Azure CLI: https://learn.microsoft.com/pt-br/cli/azure/?view=azure-cli-latest
Guia de extensões de máquinas virtuais (Custom Script Extension): https://learn.microsoft.com/pt-br/azure/virtual-machines/extensions/custom-script-windows
Azure Key Vault – gerenciamento de segredos: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/