0Pricing
DevOps Bootcamp · Leçon

Refactoriser l’état avec moved et removed

Renommez et restructurez des ressources en toute sécurité sans détruire l’infrastructure, grâce aux commandes de manipulation de l’état et aux blocs déclaratifs moved et removed.

Refactoriser l’état avec moved et removed est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.

Le problème du renommage

Lorsque vous renommez une ressource dans votre configuration, Terraform constate que l’ancienne adresse a disparu et qu’une nouvelle apparaît. Par défaut, il va détruire puis recréer la ressource, ce qui peut entraîner une interruption de service ou une perte de données.

Les outils de refactorisation de l’état vous permettent d’indiquer à Terraform qu’une ressource a simplement été déplacée.

Inspecter l’état

Commencez par lister les éléments suivis dans l’état. La commande terraform state list affiche toutes les adresses des ressources gérées.

terraform state list

Déplacement impératif avec state mv

L’approche classique consiste à utiliser terraform state mv, qui réécrit l’adresse d’une ressource dans l’état. Ici, nous renommons une instance de aws_instance.web en aws_instance.app.

terraform state mv aws_instance.web aws_instance.app

Inconvénient de state mv

state mv est une action CLI manuelle et ponctuelle. Elle n’est pas enregistrée dans le code : les coéquipiers qui appliquent la même modification sur leur machine doivent donc la répéter. Cette approche est source d’erreurs dans les flux de travail collaboratifs.

Blocs moved déclaratifs

Le bloc moved enregistre un renommage dans votre configuration. Terraform l’applique automatiquement pour tout le monde lors du prochain plan, puis vous pouvez supprimer le bloc ultérieurement.

moved {
  from = aws_instance.web
  to   = aws_instance.app
}

Déplacer une ressource dans un module

Les blocs moved permettent également d’encapsuler des ressources dans un module. L’adresse cible inclut le chemin du module.

moved {
  from = aws_instance.app
  to   = module.compute.aws_instance.app
}

Vérifier avec un plan

Après avoir ajouté un bloc moved, exécutez terraform plan. Un déplacement correct n’affiche ni destruction ni création, mais uniquement une modification d’adresse. Si un remplacement apparaît toujours, le bloc est incorrect.

terraform plan

Retirer de l’état

Vous pouvez parfois vouloir que Terraform cesse de gérer une ressource sans détruire l’infrastructure réelle. La commande impérative est terraform state rm.

terraform state rm aws_instance.legacy

Blocs removed déclaratifs

Les versions récentes de Terraform prennent en charge un bloc removed. Avec lifecycle { destroy = false }, Terraform oublie la ressource dans l’état, tout en laissant l’infrastructure réelle intacte.

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

Fractionner les fichiers d’état

Pour les projets volumineux, terraform state mv -state-out peut déplacer des ressources entre plusieurs fichiers d’état, ce qui est utile pour diviser un monolithe en piles appliquées indépendamment.

terraform state mv -state-out=network.tfstate \
  aws_vpc.main aws_vpc.main

Sauvegardes et sécurité

Terraform écrit un fichier .backup avant de modifier l’état. Toutefois, avec des moteurs principaux distants, vérifiez toujours que l’état n’est pas verrouillé par un coéquipier avant toute opération manuelle, afin d’éviter une corruption.

Vérification rapide

Testez vos connaissances en matière de refactorisation.

Récapitulatif : refactoriser l’état en toute sécurité

Vous pouvez maintenant restructurer l’infrastructure sans la détruire :

  • state mv / state rm pour les modifications impératives.
  • Les blocs moved pour les renommages déclaratifs.
  • Les blocs removed pour oublier une ressource sans la détruire.
  • Vérifiez toujours avec un plan qui n’affiche aucun remplacement.

Questions Fréquemment Posées

La leçon « Refactoriser l’état avec moved et removed » est-elle gratuite ?

Oui — le texte complet de « Refactoriser l’état avec moved et removed » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Refactoriser l’état avec moved et removed » ?

Renommez et restructurez des ressources en toute sécurité sans détruire l’infrastructure, grâce aux commandes de manipulation de l’état et aux blocs déclaratifs moved et removed. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Refactoriser l’état avec moved et removed » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Gestionnaires d’état distants
  2. Verrouillage et cohérence de l’état
  3. Importer des ressources existantes
  4. Refactoriser l’état avec moved et removed
← Retour à DevOps Bootcamp