Middle
Jaký přístup používá Terraform při znovuvytváření zdrojů?
sobes.tech AI
Odpověď od AI
Terraform používá přístup "zničit a vytvořit" (destroy and create).
V případě, že je nutná úplná aktualizace nebo změna zdroje, který nelze aktualizovat na místě (in-place update), Terraform provede následující kroky:
- Zničení stávajícího zdroje: Terraform odstraní zdroj z infrastruktury voláním příslušného API poskytovatele.
- Vytvoření nového zdroje: Po úspěšném odstranění Terraform vytvoří nový exemplář zdroje s novými parametry.
K tomu dochází, když změny v konfiguraci Terraform vyžadují úplnou výměnu zdroje. Například změna typu podsítě v cloudu (z veřejné na soukromou), což není podporováno aktualizací na místě poskytovatelem. Terraform určuje nutnost tohoto přístupu při spuštění příkazu terraform plan. Výstup plánu jasně ukáže, že zdroj bude zničen a znovu vytvořen.
// Příklad zdroje, který může být znovu vytvořen při změně určitých atributů
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Změna AMI obvykle vyžaduje znovuvytvoření
instance_type = "t2.micro" # Změna typu instance může také vyžadovat znovuvytvoření
subnet_id = "subnet-0123456789abcdef0" // Změna ID podsítě téměř vždy vyžaduje znovuvytvoření
tags = {
Name = "ExampleInstance"
}
}
Příklad výstupu terraform plan, který naznačuje znovuvytvoření:
Plan: 1 přidat, 0 změnit, 1 zničit.
Terraform provede následující akce:
# aws_instance.example bude zničen
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (ostatní atributy)
}
# aws_instance.example bude vytvořen
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (ostatní atributy)
}