Terraform kaynakları yeniden oluştururken hangi yaklaşımı kullanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Terraform, "yık ve oluştur" (destroy and create) yaklaşımını kullanır.
Gerekli durumlarda, yerinde güncelleme (in-place update) yapılamayan bir kaynağın tamamen güncellenmesi veya değiştirilmesi gerekiyorsa, Terraform aşağıdaki adımları gerçekleştirir:
- Mevcut kaynağı yok etme: Terraform, sağlayıcının ilgili API'sini çağırarak kaynağı altyapıdan kaldırır.
- Yeni kaynak oluşturma: Başarılı bir silme işleminden sonra, Terraform yeni parametrelerle yeni bir kaynak örneği oluşturur.
Bu, Terraform yapılandırmasındaki değişikliklerin kaynağın tamamen değiştirilmesini gerektirdiği durumlarda olur. Örneğin, buluttaki alt ağ türünü değiştirmek (halka açık yerine özel), bu işlem sağlayıcının yerinde güncellemesiyle desteklenmediğinde gerçekleşir. Terraform, terraform plan komutunu çalıştırırken bu yaklaşımın gerekliliğini belirler. Plan çıktısında, kaynağın yok edilip yeniden oluşturulacağı açıkça belirtilir.
// Belirli özniteliklerin değiştirilmesi durumunda yeniden oluşturulabilecek bir kaynağın örneği
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # AMI değişikliği genellikle yeniden oluşturmayı gerektirir
instance_type = "t2.micro" # Örnek türü değişikliği de yeniden oluşturmayı gerektirebilir
subnet_id = "subnet-0123456789abcdef0" // Subnet ID değişikliği neredeyse her zaman yeniden oluşturmayı gerektirir
tags = {
Name = "ExampleInstance"
}
}
Yeniden oluşturmayı belirten terraform plan çıktısı örneği:
Plan: 1 eklenmek, 0 değiştirilmek, 1 yok edilmek.
Terraform aşağıdaki işlemleri gerçekleştirecektir:
# aws_instance.example yok edilecek
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (diğer öznitelikler)
}
# aws_instance.example oluşturulacak
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (diğer öznitelikler)
}