Aula 2: O Ciclo de Vida Essencial do Terraform
Introdução
Quando você escreve seu código Terraform, ele ainda não faz nada por si só. É preciso instruir o Terraform a inicializar o projeto, planejar as mudanças e aplicar essas mudanças na infraestrutura. Esse processo é conhecido como o ciclo de vida essencial do Terraform.
Vamos conhecer os quatro comandos fundamentais:
terraform initterraform planterraform applyterraform destroy
O que é o Ciclo de Vida no Terraform?
É o fluxo de trabalho básico para provisionar e gerenciar infraestrutura com Terraform. Seguindo essa ordem, você garante que o ambiente esteja sempre consistente, previsível e seguro.
Explicação Técnica
O ciclo de vida funciona em quatro passos:
- Inicialização: prepara o ambiente, instala os plugins e define o backend.
- Planejamento: compara o código com o estado atual e mostra o que será feito.
- Aplicação: executa o plano e cria ou altera a infraestrutura.
- Destruição: remove tudo que foi criado para liberar recursos.
Comandos de Referência
1. terraform init
terraform init
- Inicia o diretório de trabalho
- Baixa os plugins dos providers declarados (ex: AWS)
- Prepara o backend para o
.tfstate - Necessário rodar apenas uma vez por projeto (ou quando muda provider)
2. terraform plan
terraform plan
- Planeja o que será criado, alterado ou destruído
- Gera um "plano de execução"
- Serve como checklist de segurança
3. terraform apply
terraform apply
- Executa o plano
- Solicita confirmação (digite
yespara continuar) - Aplica as mudanças reais na infraestrutura
4. terraform destroy
terraform destroy
- Lê o estado atual e planeja a remoção de todos os recursos
- Ótimo para limpar ambientes de teste ou desenvolvimento
Exemplo Prático
Com o seguinte código em main.tf:
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "meu_bucket_do_curso" {
bucket = "meu-bucket-do-terraform-curso"
acl = "private"
}
Execute os comandos na ordem:
terraform init
terraform plan
terraform apply
Depois, para remover tudo:
terraform destroy
Output Esperado
terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v5.0.0...
- Installed hashicorp/aws v5.0.0 (signed by HashiCorp)
Terraform has been successfully initialized!
terraform plan
Terraform will perform the following actions:
# aws_s3_bucket.meu_bucket_do_curso will be created
+ resource "aws_s3_bucket" "meu_bucket_do_curso" {
+ acl = "private"
+ bucket = "meu-bucket-do-terraform-curso"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
terraform apply
Terraform will perform the following actions:
# aws_s3_bucket.meu_bucket_do_curso will be created
+ resource "aws_s3_bucket" "meu_bucket_do_curso" {
+ acl = "private"
+ bucket = "meu-bucket-do-terraform-curso"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
aws_s3_bucket.meu_bucket_do_curso: Creating...
aws_s3_bucket.meu_bucket_do_curso: Creation complete after 2s [id=meu-bucket-do-terraform-curso]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
terraform destroy
Terraform will destroy the following resources:
# aws_s3_bucket.meu_bucket_do_curso will be destroyed
- resource "aws_s3_bucket" "meu_bucket_do_curso" {
- acl = "private" -> null
- bucket = "meu-bucket-do-terraform-curso" -> null
...
}
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
aws_s3_bucket.meu_bucket_do_curso: Destroying...
aws_s3_bucket.meu_bucket_do_curso: Destruction complete after 1s
Destroy complete! Resources: 1 destroyed.
Melhores Práticas
- Sempre rode
terraform initao iniciar um novo projeto - Nunca aplique sem revisar o plano com
terraform plan - Use
terraform apply -auto-approvecom cuidado, apenas em scripts automatizados - Prefira
terraform destroyem ambientes temporários ou de teste - Verifique o
terraform.tfstatee, se possível, use backend remoto com lock
Com esses quatro comandos, você já domina o ciclo essencial do Terraform.