Quelle approche Terraform utilise-t-il lors de la recréation des ressources?
sobes.tech IA
Réponse de l'IA
Terraform utilise une approche de "détruire et créer" (destroy and create).
En cas de nécessité de mise à jour ou de modification complète d'une ressource qui ne peut pas être mise à jour sur place (mise à jour in-place), Terraform effectue les étapes suivantes :
- Détruire la ressource existante : Terraform supprime la ressource de l'infrastructure en appelant l'API du fournisseur.
- Créer une nouvelle ressource : Après une suppression réussie, Terraform crée une nouvelle instance de la ressource avec les nouveaux paramètres.
Cela se produit lorsque les changements dans la configuration Terraform nécessitent un remplacement complet de la ressource. Par exemple, changer le type de sous-réseau dans le cloud (public à privé), ce qui n'est pas supporté par une mise à jour in-place du fournisseur. Terraform détermine la nécessité de cette approche lors de l'exécution de la commande terraform plan. La sortie du plan indiquera clairement que la ressource sera détruite et recréée.
// Exemple de ressource pouvant être recréée lors de la modification de certains attributs
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Changer l'AMI nécessite généralement une recréation
instance_type = "t2.micro" # Changer le type d'instance peut également nécessiter une recréation
subnet_id = "subnet-0123456789abcdef0" // Changer l'ID du sous-réseau nécessite presque toujours une recréation
tags = {
Name = "ExampleInstance"
}
}
Exemple de sortie de terraform plan indiquant une recréation :
Plan: 1 à ajouter, 0 à changer, 1 à détruire.
Terraform effectuera les actions suivantes :
# aws_instance.example sera détruit
- ressource "aws_instance" "example" {
- ami = "ami-old-id" -> null
- arn = "arn:aws:ec2:..." -> null
... (autres attributs)
}
# aws_instance.example sera créé
+ ressource "aws_instance" "example" {
+ ami = "ami-new-id"
+ instance_type = "t2.micro"
+ subnet_id = "subnet-0123456789abcdef0"
... (autres attributs)
}