Quale approccio utilizza Terraform durante la ricreazione delle risorse?
sobes.tech AI
Risposta dell'AI
Terraform utilizza un approccio di "distruzione e creazione" (destroy and create).
Nel caso sia necessario un aggiornamento completo o una modifica di una risorsa che non può essere aggiornata in loco (in-place update), Terraform esegue i seguenti passaggi:
- Distruzione della risorsa esistente: Terraform elimina la risorsa dall'infrastruttura chiamando l'API del provider.
- Creazione di una nuova risorsa: Dopo averla eliminata con successo, Terraform crea una nuova istanza della risorsa con i nuovi parametri.
Questo avviene quando le modifiche alla configurazione di Terraform richiedono una sostituzione completa della risorsa. Ad esempio, cambiare il tipo di subnet nel cloud (da pubblico a privato), cosa non supportata dall'aggiornamento in loco del provider. Terraform determina la necessità di questo approccio eseguendo il comando terraform plan. Nell'output del piano sarà chiaramente indicato che la risorsa sarà distrutta e ricreata.
// Esempio di risorsa che può essere ricreata al cambiamento di alcuni attributi
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # La modifica dell'AMI di solito richiede la ricreazione
instance_type = "t2.micro" # La modifica del tipo di istanza può richiedere la ricreazione
subnet_id = "subnet-0123456789abcdef0" // La modifica dell'ID della subnet richiede quasi sempre la ricreazione
tags = {
Name = "ExampleInstance"
}
}
Esempio di output di terraform plan che indica una ricreazione:
Plan: 1 da aggiungere, 0 da modificare, 1 da distruggere.
Terraform eseguirà le seguenti azioni:
# aws_instance.example sarà distrutto
- resource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (altri attributi)
}
# aws_instance.example sarà creato
+ resource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (altri attributi)
}