Sobes.tech
Middle

Terraform дар вақти барқарор кардани захираҳо кадом усулро истифода мебарад?

sobes.tech AI

Ҷавоб аз AI

Таҳрир истифодаи усули "азоқат ва эҷод" (destroy and create)-ро дорад.

Дар ҳолате, ки зарур аст, навсозии пурра ё тағироти манбаъ, ки дар ҷой (in-place update) навсозӣ кардан мумкин нест, Terraform қадамҳои зеринро иҷро мекунад:

  1. Нобуд кардани манбаъҳои мавҷуда: Terraform манбаъро аз инфрасохтор бо даъвати API-и дахлдори провайдер хориҷ мекунад.
  2. Эҷоди манбаъҳои нав: Пас аз нобуд кардани муваффақ, Terraform намунаи навро бо параметрҳои нав эҷод мекунад.

Ин ҳолатҳо, вақте рӯй медиҳанд, ки тағирот дар конфигуратсияи Terraform талаб мекунанд, ки манбаъ пурра иваз карда шавад. Масалан, тағир додани навъи зерсохт дар облак (аз умумӣ ба хусусӣ), ки бо навсозии дар ҷой (in-place update) дастгирӣ намешавад. Terraform зарурияти чунин муносибатро дар иҷрои фармони terraform plan муайян мекунад. Дар натиҷаи нақша равшан нишон медиҳад, ки манбаъ нобуд ва дубора эҷод хоҳад шуд.

// Мисоли манбаъ, ки метавонад дар тағироти баъзе хосиятҳо дубора эҷод шавад
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890" # Тағйир додани AMI одатан талаб мекунад, ки дубора эҷод шавад
  instance_type = "t2.micro"           # Тағйир додани навъи инстансия низ метавонад талаб кунад, ки дубора эҷод шавад
  subnet_id     = "subnet-0123456789abcdef0" // Тағйир додани ID-и зерсохт қариб ки ҳамеша талаб мекунад, ки дубора эҷод шавад

  tags = {
    Name = "ExampleInstance"
  }
}

Натиҷаи terraform plan, ки нишон медиҳад, ки дубора эҷод кардан лозим аст:

Plan: 1 илова кардан, 0 иваз кардан, 1 нобуд кардан.

Terraform амалҳои зеринро иҷро мекунад:

  # aws_instance.example нобуд карда мешавад
  - resource "aws_instance" "example" {
      - ami                    = "ami-old-id" -> null
      - arn                    = "arn:aws:ec2:..." -> null
      ... (атрибутҳои дигар)
    }

  # aws_instance.example эҷод мешавад
  + resource "aws_instance" "example" {
      + ami           = "ami-new-id"
      + instance_type = "t2.micro"
      + subnet_id     = "subnet-0123456789abcdef0"
      ... (атрибутҳои дигар)
    }