Infrastructure as Code com Terraform
Aprenda a provisionar, gerenciar e automatizar sua infraestrutura em nuvem através de código declarativo.
Desenvolvido pelo Prof. Waldinei Bispo de Lima
Recriado por Leonardo do Espirito Santo da Silva
O que você vai aprender
Domine os conceitos fundamentais e práticos de Infrastructure as Code com Terraform
Infrastructure as Code
Compreenda os conceitos fundamentais de IaC, suas limitações da abordagem manual e benefícios da automação.
Terraform & HCL
Explore a linguagem HCL, estrutura de projetos e o ciclo de vida do Terraform (init, plan, apply, destroy).
Provedores & Recursos
Entenda como o Terraform se conecta a diferentes plataformas, com foco no provedor AWS.
Pronto para começar?
Explore os conceitos fundamentais de Infrastructure as Code e domine o Terraform
Começar Agora →Conceitos Fundamentais
Compreenda os pilares teóricos de Infrastructure as Code e como o Terraform revoluciona o gerenciamento de infraestrutura
O que é Infrastructure as Code?
Infrastructure as Code (IaC) é um paradigma que trata a definição e o gerenciamento da infraestrutura (redes, servidores, bancos de dados, balanceadores de carga, etc.) da mesma forma que tratamos o código de uma aplicação.
Em vez de configurar servidores manualmente através de um console, com IaC descrevemos o estado desejado da infraestrutura em arquivos de configuração declarativos. Esses arquivos se tornam a única fonte da verdade.
-
✓
Versionável
Arquivos podem ser versionados em Git com histórico completo de mudanças
-
✓
Reprodutível
Crie ambientes idênticos (dev, teste, produção) a partir do mesmo código
-
✓
Testável
Valide mudanças antes de aplicá-las à produção
Limitações da Abordagem Manual
⚠️ Problemas da Abordagem Manual
- • Configuration Drift: Estado real diverge do documentado
- • Downtime: Mudanças requerem paradas do sistema
- • Erros Humanos: Execução manual é propensa a falhas
- • Falta de Rastreabilidade: Difícil auditar quem fez o quê
- • Escalabilidade Limitada: Difícil replicar ambientes
✓ Benefícios do IaC
- ✓ Velocidade: Provisione ambientes em minutos
- ✓ Consistência: Todos os ambientes são idênticos
- ✓ Redução de Risco: Testes automatizados e code review
- ✓ Auditoria: Histórico completo de mudanças
- ✓ Custo: Otimize gastos com nuvem
Introdução ao Terraform
O Terraform é uma ferramenta de orquestração de infraestrutura criada pela HashiCorp que permite definir, provisionar e gerenciar infraestrutura em ambientes de nuvem de forma segura e eficiente.
Características Principais
-
💡
Agnóstico em Relação à Nuvem
Funciona com AWS, Google Cloud, Azure, OpenStack e muito mais
-
💡
Linguagem Declarativa (HCL)
Descreva o que você quer, não como fazer
-
💡
Ciclo de Vida Simples
init → plan → apply → destroy
Linguagem HCL
O Terraform utiliza HCL (HashiCorp Configuration Language), uma linguagem declarativa projetada para ser fácil de ler e escrever por humanos.
Estrutura básica de um bloco HCL:
Blocos
Contêineres para configurações. O tipo define o objeto sendo configurado (resource, variable, provider)
Argumentos
Atribuem valores a nomes dentro de um bloco
Rótulos
Nomes dados a um bloco (ex: tipo de recurso e nome local)
Expressões
Representam um valor, literal ou referência a outros valores
Próximo Passo: Prática
Agora que você compreende os conceitos fundamentais, explore exemplos práticos e estudos de caso
Ir para PráticaPrática & Estudos de Caso
Explore exemplos práticos de Infrastructure as Code com Terraform em cenários reais
Fluxo de Trabalho do Terraform
Compreenda como o Terraform processa seu código Infrastructure as Code, desde a escrita do arquivo .tf até o provisionamento dos recursos na nuvem. O fluxo envolve o Developer escrevendo código HCL, o Terraform Core interpretando esse código, os Providers conectando-se aos serviços em nuvem (como AWS), e finalmente os Resources sendo criados.
Componentes do Fluxo
- Developer: Escreve arquivos .tf com código HCL
- Terraform Core: Interpreta e processa o código
- Provider (AWS): Conecta-se ao serviço em nuvem
- Resources: S3 Buckets, EC2 Instances, etc.
- State File: Mantém o estado da infraestrutura
Ciclo de Vida do Terraform
init
Inicializa um diretório Terraform, baixa providers e prepara o ambiente
plan
Cria um plano de execução mostrando quais recursos serão criados/modificados
apply
Executa o plano e provisiona os recursos na nuvem
destroy
Remove todos os recursos gerenciados pelo Terraform
Exemplo de Comando
Website Estático no Amazon S3
Neste caso prático, você aprenderá a provisionar um bucket S3 da Amazon Web Services para hospedar um website estático, comparando a abordagem manual com a automatizada via Terraform.
Conceitos Abordados
- 💻 Criação de buckets S3 com Terraform
- 💻 Configuração de acesso público
- 💻 Hospedagem de website estático
- 💻 Comparação: Manual vs. Terraform
Lições Aprendidas
- • Automação reduz tempo de provisionamento de horas para minutos
- • Código é mais confiável que procedimentos manuais
- • Fácil replicar a mesma infraestrutura em múltiplos ambientes
- • Histórico de mudanças fica registrado no Git
Exemplo de Código
Instância EC2 com Manipulações de Recursos
Aprenda a provisionar uma instância EC2 na AWS com Terraform, incluindo configurações de rede, segurança e manipulações de recursos durante o ciclo de vida.
Conceitos Abordados
- 🗄️ Provisionamento de instâncias EC2
- 🗄️ Configuração de VPC e Security Groups
- 🗄️ Manipulação de recursos (update, replace)
- 🗄️ State management e outputs
Pontos-Chave
- • O Terraform gerencia o estado da infraestrutura
- • Mudanças no código geram planos de execução claros
- • Alguns recursos são substituídos, outros são atualizados
- • Outputs permitem acessar informações dos recursos criados
Exemplo de Código
Recursos Adicionais
Documentação Oficial
Acesse a documentação completa do Terraform com guias, referências e exemplos
Terraform Registry
Explore providers, módulos e exemplos compartilhados pela comunidade
HashiCorp Learn
Tutoriais interativos e cursos sobre Terraform e DevOps
Comunidade Terraform
Conecte-se com outros usuários, faça perguntas e compartilhe experiências
Próxima Etapa
Você está preparado para a Unidade 3: Gerenciamento de Configuração com Ansible
Voltar ao Início