Middle
Kokį požiūrį naudoja Terraform kuriant iš naujo išteklius?
sobes.tech AI
Atsakymas iš AI
Terraform naudoja "ištrinti ir sukurti" požiūrį:
Jei reikia visiško atnaujinimo ar pakeitimo ištekliui, kurį neįmanoma atnaujinti vietoje, Terraform atlieka šiuos žingsnius:
- Esamo ištekliaus naikinimas: Terraform pašalina išteklių iš infrastruktūros naudodamas atitinkamą API:
- Naujo ištekliaus sukūrimas: Sėkmingai pašalinus, Terraform sukuria naują išteklių su naujais parametrais:
Tai vyksta, kai Terraform konfigūracijos pakeitimai reikalauja visiško ištekliaus pakeitimo. Pavyzdžiui, pogrupio tipo keitimas debesyje (viešas į privačią), kuris nėra palaikomas vietoje atnaujinimo. Terraform pats nustato, kada taikomas šis požiūris, vykdydamas terraform plan. Plane bus aiškiai nurodyta, kad išteklius bus sunaikintas ir sukurtas iš naujo:
// Pavyzdinis išteklius, kuris gali būti perkurta keičiant tam tikrus atributus
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # AMI keitimas dažnai reikalauja perkurti
instance_type = "t2.micro" # Tipo keitimas taip pat gali reikalauti perkurti
subnet_id = "subnet-0123456789abcdef0" // Subnet ID keitimas beveik visada reikalauja perkurti
tags = {
Name = "ExampleInstance"
}
}
terraform plan rezultato pavyzdys, rodantis perkurimą:
Plan: 1 to add, 0 to change, 1 to destroy.
Terraform atliks šiuos veiksmus:
# aws_instance.example bus sunaikintas
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (kiti atributai)
}
# aws_instance.example bus sukurtas iš naujo
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (kiti atributai)
}