Qual abordagem o Terraform usa ao recriar recursos?
sobes.tech IA
Resposta da IA
O Terraform utiliza uma abordagem de "destruir e criar" (destroy and create).
No caso de necessidade de uma atualização completa ou alteração de um recurso que não pode ser atualizado no local (atualização in-place), o Terraform realiza os seguintes passos:
- Destruição do recurso existente: O Terraform remove o recurso da infraestrutura chamando a API correspondente do provedor.
- Criação de um novo recurso: Após a exclusão bem-sucedida, o Terraform cria uma nova instância do recurso com os novos parâmetros.
Isso ocorre quando as mudanças na configuração do Terraform exigem uma substituição completa do recurso. Por exemplo, alterar o tipo de sub-rede na nuvem (de pública para privada), o que não é suportado por uma atualização in-place do provedor. O Terraform determina a necessidade dessa abordagem ao executar o comando terraform plan. Na saída do plano, será indicado claramente que o recurso será destruído e recriado.
// Exemplo de recurso que pode ser recriado ao alterar certos atributos
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Alterar a AMI geralmente requer recriação
instance_type = "t2.micro" # Alterar o tipo de instância também pode requerer recriação
subnet_id = "subnet-0123456789abcdef0" // Alterar o ID da Subnet quase sempre requer recriação
tags = {
Name = "ExampleInstance"
}
}
Exemplo de saída do terraform plan indicando uma recriação:
Plan: 1 a adicionar, 0 a alterar, 1 a destruir.
O Terraform realizará as seguintes ações:
# aws_instance.example será destruído
- recurso "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (outros atributos)
}
# aws_instance.example será criado
+ recurso "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (outros atributos)
}