- O que é Terraform?
- Principais Características
- Como o Terraform funciona?
- Casos de Uso
- Terraform vs. Outros Softwares
- Provedores Suportados
- Modelos de Computação em Nuvem
- Links Úteis
Terraform é uma ferramenta open source criada pela HashiCorp para construir, alterar e versionar infraestrutura com segurança e eficiência através de código — o conceito de Infrastructure as Code (IaC).
| Característica | Descrição |
|---|---|
| Open source e declarativo | Define o estado desejado, não os passos para chegar lá |
| Versionamento | Evolução da infraestrutura com histórico e automação |
| Idempotência | Aplicar o mesmo plano múltiplas vezes gera o mesmo resultado |
| Sintaxe high-level (HCL) | Linguagem legível e altamente reutilizável |
| Paridade de ambiente | Ambientes dev, staging e prod com a mesma configuração |
- Segurança e previsibilidade — visualize as mudanças antes de aplicá-las
- Separação de planejamento e aplicação —
terraform plan→terraform apply
- Agnóstico — funciona com qualquer provedor de infraestrutura
- Permite provisionar para múltiplos provedores simultaneamente
O core do Terraform utiliza duas fontes de entrada:
┌─────────────────────────────────────────────────────┐
│ TERRAFORM CORE │
│ │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Arquivos de │ │ Estado Atual │ │
│ │ Configuração │ │ (terraform.tfstate) │ │
│ │ (estado desejado)│ │ │ │
│ └────────┬─────────┘ └──────────┬───────────┘ │
│ └──────────┬──────────────┘ │
│ ▼ │
│ [ Plano de Execução ] │
│ ▼ │
│ [ Aplicar Mudanças ] │
└──────────────────────┬──────────────────────────────┘
│
┌────────┴────────┐
▼ ▼
Providers Resources
Os provedores expõem recursos que possibilitam criar infraestrutura em diferentes plataformas:
| Categoria | Exemplos |
|---|---|
| IaaS | AWS, GCP, Azure, OCI, VMware |
| PaaS | Kubernetes, Heroku, Digital Ocean |
| SaaS | New Relic, Datadog |
- ✔️ Criar ou provisionar nova infraestrutura do zero
- ✔️ Gerenciar infraestrutura existente com controle de mudanças
- ✔️ Replicar infraestrutura entre ambientes (dev, staging, prod)
Terraform é uma ferramenta de alto nível de orquestração de infraestrutura, diferente de:
| Ferramenta | Propósito | Diferença |
|---|---|---|
| Ansible, Puppet, Chef | Gerenciamento de configuração | Terraform não gerencia configuração de SO/app — foca no provisionamento |
| CloudFormation, ARM | IaC de vendor único | Terraform suporta múltiplos provedores simultaneamente |
💡 Terraform pode ser combinado com Ansible/Chef para provisionamento + configuração.
| Provider | Recursos | Manutenção |
|---|---|---|
| AWS | EC2, Lambda, EKS, ECS, VPC, S3, RDS, DynamoDB | HashiCorp AWS Provider |
| GCP | Compute Engine, Cloud Storage, Cloud SQL, GKE, BigQuery | Google + HashiCorp |
| Azure | Azure Resource Manager (ARM) completo | Microsoft + HashiCorp |
| Kubernetes | Deployments, Services, CRDs, Policies, Quotas | HashiCorp |
| OCI | Recursos Oracle Cloud Infrastructure via APIs OCI | HashiCorp |
┌─────────────────────────────────────────────────────────────┐
│ NÍVEL DE ABSTRAÇÃO │
├──────────┬──────────────────────────────────────────────────┤
│ SaaS │ Aplicação completa (Gmail, Salesforce) │
├──────────┼──────────────────────────────────────────────────┤
│ FaaS │ Funções serverless (Lambda, Cloud Functions) │
├──────────┼──────────────────────────────────────────────────┤
│ PaaS │ Executáveis e Containers (App Engine, Heroku) │
├──────────┼──────────────────────────────────────────────────┤
│ CaaS │ Ferramentas de Gestão (Kubernetes, ECS) │
├──────────┼──────────────────────────────────────────────────┤
│ IaaS │ Servidores, Storage, Rede (EC2, GCE, Azure VM) │
├──────────┼──────────────────────────────────────────────────┤
│ On-prem │ Co-Location / DataCenter próprio │
└──────────┴──────────────────────────────────────────────────┘
| Recurso | Link |
|---|---|
| 🟠 AWS CLI | aws.amazon.com/pt/cli |
| 🟣 Terraform Registry | registry.terraform.io |
| 📘 Docs AWS Provider | registry.terraform.io/providers/hashicorp/aws |
Mantido por josenilto