Ce abordare folosește Terraform la recrearea resurselor?
sobes.tech AI
Răspuns de la AI
Terraform utilizează o abordare de tip "distruge și creează" (destroy and create).
În cazul în care este necesară o actualizare completă sau modificare a unei resurse care nu poate fi actualizată pe loc (actualizare in-place), Terraform efectuează următorii pași:
- Distrugerea resursei existente: Terraform elimină resursa din infrastructură apelând API-ul corespunzător al furnizorului.
- Crearea unei resurse noi: După eliminarea cu succes, Terraform creează o nouă instanță a resursei cu noii parametri.
Acest lucru se întâmplă atunci când modificările în configurația Terraform necesită înlocuirea completă a resursei. De exemplu, schimbarea tipului de subrețea în cloud (de la public la privat), lucru care nu este suportat de actualizarea in-place a furnizorului. Terraform determină necesitatea acestei abordări la rularea comenzii terraform plan. În ieșirea planului va fi clar indicat că resursa va fi distrusă și recreată.
// Exemplu de resursă care poate fi recreată la schimbarea anumitor atribute
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Schimbarea AMI necesită de obicei recreare
instance_type = "t2.micro" # Schimbarea tipului de instanță poate necesita și ea recreare
subnet_id = "subnet-0123456789abcdef0" // Schimbarea ID-ului Subnet necesită aproape întotdeauna recreare
tags = {
Name = "ExampleInstance"
}
}
Exemplu de ieșire terraform plan indicând o recreare:
Plan: 1 de adăugat, 0 de modificat, 1 de distrus.
Terraform va efectua următoarele acțiuni:
# aws_instance.example va fi distrus
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (alte atribute)
}
# aws_instance.example va fi creat
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (alte atribute)
}