Middle
Какъв подход използва Terraform при повторното създаване на ресурси?
sobes.tech AI
Отговор от AI
Terraform използва подхода "унищожи и създай" (destroy and create).
В случай, че е необходима пълна актуализация или промяна на ресурс, който не може да бъде актуализиран на място (in-place update), Terraform изпълнява следните стъпки:
- Унищожаване на съществуващия ресурс: Terraform премахва ресурса от инфраструктурата чрез извикване на съответния API на доставчика.
- Създаване на нов ресурс: След успешно унищожаване, Terraform създава нов екземпляр на ресурса с новите параметри.
Това се случва, когато промените в конфигурацията на Terraform изискват пълна замяна на ресурса. Например, промяна на типа на подсистемата в облака (от публична към частна), което не се поддържа от актуализацията на място от доставчика. 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"
... (други атрибути)
}