Milyen megközelítést alkalmaz a Terraform az erőforrások újraalkotásakor?
sobes.tech MI
Válasz az MI-től
A Terraform az "eldöntés és létrehozás" (destroy and create) megközelítést alkalmazza.
Amennyiben egy erőforrás teljes frissítése vagy módosítása szükséges, amelyet nem lehet helyben (in-place update) végrehajtani, a Terraform a következő lépéseket hajtja végre:
- A meglévő erőforrás megsemmisítése: A Terraform eltávolítja az erőforrást az infrastruktúrából a megfelelő API hívásával.
- Új erőforrás létrehozása: Sikeres törlés után a Terraform létrehoz egy új példányt az erőforrásból az új paraméterekkel.
Ez akkor fordul elő, amikor a Terraform konfigurációjában végrehajtott változtatások az erőforrás teljes cseréjét igénylik. Például, ha a felhőben a subnet típusát módosítjuk (nyilvánosról privátra), amit a provider helyben történő frissítése nem támogat. A Terraform ezt a megközelítést a terraform plan parancs futtatásakor határozza meg. A terv kimenetében egyértelműen jelezni fogja, hogy az erőforrás megsemmisítésre és újra létrehozásra kerül.
// Példa olyan erőforrásra, amely bizonyos attribútumok módosításakor újra létrehozható
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Az AMI módosítása általában újra létrehozást igényel
instance_type = "t2.micro" # Az instance típus módosítása szintén igényelhet újra létrehozást
subnet_id = "subnet-0123456789abcdef0" // A Subnet ID módosítása szinte mindig újra létrehozást igényel
tags = {
Name = "ExampleInstance"
}
}
A terraform plan kimenete, amely egy újra létrehozást jelez:
Plan: 1 hozzáadás, 0 módosítás, 1 megsemmisítés.
A Terraform a következő műveleteket hajtja végre:
# aws_instance.example meg lesz semmisítve
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (egyéb attribútumok)
}
# aws_instance.example létre lesz hozva
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (egyéb attribútumok)
}