Middle
98
questionbank
Какой подход использует Terraform при пересоздании ресурсов?
Ответ от нейросети
sobes.tech AI
Terraform использует подход "уничтожить и создать" (destroy and create).
В случае необходимости полного обновления или изменения ресурса, который нельзя обновить по месту (in-place update), Terraform выполняет следующие шаги:
- Уничтожение существующего ресурса: Terraform удаляет ресурс из инфраструк-туры путём вызова соответствующего API провайдера.
- Создание нового ресурса: После успешного удаления Terraform создаёт новый экземпляр ресурса с новыми параметрами.
Это происходит, когда изменения в конфигурации Terraform требуют полной замены ресурса. Например, изменение типа подсети в облаке (публичная на приватную), которое не поддерживается in-place обновлением провайдера. Terraform сам определяет необходимость такого подхода при выполнении команды terraform plan. В выводе плана будет явно указано, что ресурс будет уничтожен и создан заново.
// Пример ресурса, который может быть пересоздан при изменении определенных атрибутов
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Изменение AMI обычно требует пересоздания
instance_type = "t2.micro" # Изменение типа инстанса также может требовать пересоздания
subnet_id = "subnet-0123456789abcdef0" // Изменение Subnet ID почти всегда требует пересоздания
tags = {
Name = "ExampleInstance"
}
}
Пример вывода terraform plan, указывающего на пересоздание:
Plan: 1 to add, 0 to change, 1 to destroy.
Terraform will perform the following actions:
# aws_instance.example will be destroyed
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (остальные атрибуты)
}
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (остальные атрибуты)
}