Lab: Criando Infraestrutura Completa de VMs no Azure com Terraform
Introdução
Neste lab avançado, vamos construir uma infraestrutura empresarial completa no Microsoft Azure utilizando Terraform. Este projeto representa o culminar de todos os conceitos aprendidos durante o curso, demonstrando como criar uma solução de produção real com todas as camadas necessárias: computação, rede, segurança, storage, monitoramento e backup.
O lab simula um cenário empresarial onde precisamos provisionar ambientes para uma aplicação web, com configurações diferentes para desenvolvimento e produção, aplicando boas práticas de Infrastructure as Code (IaC) e gestão de custos.
O que você vai aprender
- Como estruturar um projeto Terraform complexo e escalável
- Utilização avançada de variables, locals e outputs para código reutilizável
- Implementação de múltiplos providers (azurerm, random, tls, time)
- Criação de recursos condicionais baseados no ambiente
- Aplicação de naming conventions e tags organizacionais
- Gestão inteligente de custos com auto-shutdown e sizing por ambiente
- Implementação de segurança com Key Vault e SSH keys automatizadas
- Configuração de backup e monitoramento condicionais
Pré-requisitos
- Terraform instalado (versão >= 1.5.0)
- Conta Azure com permissões de Contributor
- Azure CLI instalada e autenticada
- Conhecimento dos conceitos básicos de Terraform
- Familiaridade com Azure (VMs, networking, storage)
Arquitetura da Solução
Nossa infraestrutura será composta por múltiplas camadas integradas:
Camada de Rede
- Virtual Network com segmentação em subnets
- Network Security Groups com regras de firewall específicas
- Public IPs para acesso externo controlado
- Application Security Groups para micro-segmentação
- Private DNS Zone para resolução interna
Camada de Computação
- Virtual Machines Linux com Ubuntu 20.04 LTS
- Configuração flexível de quantidade e tamanho por ambiente
- Auto-shutdown programado para economia de custos
- SSH keys geradas e gerenciadas automaticamente
Camada de Storage
- Managed Disks com diferentes tiers por ambiente
- Storage Account para boot diagnostics
- Backup automático configurável
Camada de Segurança
- Azure Key Vault para gerenciamento de secrets
- Network Security Groups com regras restritivas
- SSH keys criptografadas e rotacionáveis
- Tags para governança e compliance
Camada de Monitoramento (Opcional)
- Log Analytics Workspace para centralização de logs
- Azure Monitor com alertas proativos
- VM Extensions para coleta de métricas
Estrutura do Projeto
O projeto seguirá uma estrutura organizacional profissional:
azure-terraform-vm-project/
├── main.tf # Recursos principais da infraestrutura
├── variables.tf # Definições de variáveis com validação
├── locals.tf # Lógica complexa e naming conventions
├── outputs.tf # Informações de saída estruturadas
├── versions.tf # Configuração de providers e versões
├── additional-resources.tf # Recursos avançados e opcionais
├── terraform.tfvars # Valores padrão das variáveis
├── dev.tfvars # Configuração para desenvolvimento
├── prod.tfvars # Configuração para produção
├── README.md # Documentação do projeto
└── .gitignore # Arquivos a serem ignorados pelo Git
Conceitos Terraform Demonstrados
Fundamentos Avançados
- Variables com tipos complexos (objects, lists) e validações customizadas
- Locals com lógica condicional e cálculos dinâmicos
- Outputs estruturados retornando informações úteis
- Count e for_each para criação de múltiplos recursos
- Dynamic blocks para configurações condicionais
Providers e Integração
- Múltiplos providers trabalhando em conjunto
- Data sources para consultar informações existentes
- Resource dependencies implícitas e explícitas
- Lifecycle rules para proteção de recursos críticos
Organização e Boas Práticas
- Separação de ambientes com arquivos .tfvars específicos
- Naming conventions automatizadas e consistentes
- Tagging strategy para organização e billing
- Estrutura de código modular e reutilizável
Ambientes e Configurações
Ambiente de Desenvolvimento
- VMs menores e econômicas (Standard_B1s)
- Discos Standard para redução de custos
- Auto-shutdown às 18h para economia
- Backup desabilitado (dados não críticos)
- Monitoramento básico
Ambiente de Produção
- VMs robustas com alta disponibilidade (Standard_D2s_v3)
- Múltiplas instâncias com Load Balancer
- Discos Premium para performance
- Backup habilitado com retenção de 90 dias
- Monitoramento completo com alertas
- Sem auto-shutdown (disponibilidade 24/7)
Gestão de Custos
O projeto implementa várias estratégias de otimização de custos:
- Auto-shutdown: VMs se desligam automaticamente fora do horário comercial
- Sizing inteligente: Recursos dimensionados apropriadamente por ambiente
- Storage optimization: Tipos de disco adequados ao uso (Standard vs Premium)
- Recursos condicionais: Backup e monitoring apenas quando necessário
- Tags para billing: Facilita análise de custos por projeto/departamento
Funcionalidades Avançadas
- Geração automática de SSH keys: Terraform cria e gerencia as chaves
- Key Vault integration: Secrets armazenados de forma segura
- Conditional resources: Recursos criados baseados em variáveis
- Multi-environment: Mesmo código, configurações diferentes
- Naming automation: Nomes padronizados e únicos automaticamente
- Tag inheritance: Tags aplicadas consistentemente em todos os recursos
Estimativa de Investimento
Ambiente de Desenvolvimento
- Custo mensal: ~$8-15 USD (com auto-shutdown)
- Ideal para testes e aprendizado
Ambiente de Produção
- Custo mensal: ~$390-515 USD (3 VMs com todos os recursos)
- Solução empresarial completa
Valor Profissional
Este lab demonstra competências essenciais para:
- Cloud Engineers: Arquitetura e implementação Azure
- DevOps Engineers: Infrastructure as Code avançado
- SRE: Automação, monitoramento e gestão de custos
- Arquitetos de Soluções: Design de infraestrutura escalável
O projeto representa exatamente o tipo de solução que empresas implementam em produção, mostrando domínio profissional de Terraform e boas práticas de cloud computing.
Próximos Passos
Após completar este lab, você estará preparado para:
- Implementar soluções Terraform em ambiente corporativo
- Gerenciar infraestrutura multi-ambiente de forma eficiente
- Aplicar boas práticas de segurança e governança em cloud
- Otimizar custos mantendo performance e disponibilidade
- Evoluir a solução para arquiteturas mais complexas (microservices, containers, etc.)
Este é o projeto que demonstrará sua competência técnica em entrevistas e projetos reais!