Middle
Aký prístup používa Terraform pri opätovnom vytváraní zdrojov?
sobes.tech AI
Odpoveď od AI
Terraform používa prístup "zničiť a vytvoriť" (destroy and create).
V prípade, že je potrebná úplná aktualizácia alebo zmena zdroja, ktorý nie je možné aktualizovať na mieste (in-place update), Terraform vykoná nasledovné kroky:
- Zničenie existujúceho zdroja: Terraform odstráni zdroj z infraštruktúry volaním príslušného API poskytovateľa.
- Vytvorenie nového zdroja: Po úspešnom zničení Terraform vytvorí nový exemplár zdroja s novými parametrami.
Toto sa deje, keď zmeny v konfigurácii Terraform vyžadujú úplnú výmenu zdroja. Napríklad, zmena typu podsiete v cloude (z verejnej na súkromnú), čo nie je podporované in-place aktualizáciou poskytovateľa. Terraform určuje potrebu tohto prístupu pri spustení príkazu terraform plan. Vo výstupe plánu bude jasne uvedené, že zdroj bude zničený a znovu vytvorený.
// Príklad zdroja, ktorý môže byť znovu vytvorený pri zmene určitých atribútov
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Zmena AMI zvyčajne vyžaduje znovuvytvorenie
instance_type = "t2.micro" # Zmena typu inštancie môže tiež vyžadovať znovuvytvorenie
subnet_id = "subnet-0123456789abcdef0" // Zmena ID podsiete takmer vždy vyžaduje znovuvytvorenie
tags = {
Name = "ExampleInstance"
}
}
Príklad výstupu terraform plan, ktorý naznačuje znovuvytvorenie:
Plan: 1 pridať, 0 zmeniť, 1 zničiť.
Terraform vykoná nasledovné akcie:
# aws_instance.example bude zničený
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (ďalšie atribúty)
}
# aws_instance.example bude vytvorený
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (ďalšie atribúty)
}