Destruction de Ressources Terraform

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue dans ce laboratoire sur la destruction de ressources Terraform. Une partie essentielle du cycle de vie de l'infrastructure n'est pas seulement la création et la mise à jour des ressources, mais aussi leur suppression propre lorsqu'elles ne sont plus nécessaires. Ce processus est connu sous le nom de destruction.

Terraform fournit un flux de travail simple et sûr pour détruire l'infrastructure. La commande principale pour cela est terraform destroy. Pour éviter toute suppression accidentelle, Terraform offre également un moyen de prévisualiser ce qui sera détruit avant de s'engager dans l'action.

Dans ce laboratoire, vous apprendrez à :

  • Utiliser terraform plan -destroy pour prévisualiser un plan de destruction.
  • Interpréter la sortie du plan de destruction.
  • Exécuter la commande terraform destroy pour supprimer les ressources.
  • Vérifier que les ressources ont été supprimées avec succès à la fois du système et du fichier d'état (state file) de Terraform.

Nous travaillerons avec une simple ressource local_file, ce qui nous permettra de nous concentrer sur le flux de travail Terraform sans avoir besoin de fournir des informations d'identification de fournisseur de cloud.

Confirmer l'état actuel du projet

Avant de commencer le processus de destruction, vérifions d'abord l'état actuel de notre projet Terraform. Cela vous aidera à comprendre quelles ressources sont actuellement gérées par Terraform.

Exécutez les commandes suivantes pour vérifier l'état actuel du projet :

Tout d'abord, listons les fichiers dans le répertoire du projet :

ls -la

Vous devriez voir une sortie similaire à ce qui suit :

total 20
drwxr-xr-x 1 labex labex  110 Oct 15 13:10 .
drwxr-x--- 1 labex labex 4096 Oct 15 13:10 ..
drwxr-xr-x 3 labex labex   23 Oct 15 13:07 .terraform
-rw-r--r-- 1 labex labex 1181 Oct 15 13:07 .terraform.lock.hcl
-rwxrwxr-x 1 labex labex   45 Oct 15 13:10 example.txt
-rw-rw-r-- 1 labex labex  258 Oct 15 13:10 main.tf
-rw-rw-r-- 1 labex labex 1088 Oct 15 13:10 terraform.tfstate

Ceci montre le fichier main.tf et le fichier terraform.tfstate qui ont été créés par le script de configuration, ainsi que le fichier example.txt qui a été créé lorsque la configuration Terraform a été appliquée.

Ensuite, vérifions l'état Terraform actuel :

terraform show

Vous devriez voir une sortie similaire à ce qui suit :

## local_file.example:
resource "local_file" "example" {
    content              = "This is an example file managed by Terraform."
    directory_permission = "0777"
    file_permission      = "0777"
    filename             = "./example.txt"
    id                   = "ec3adcab998872def2df6200fb03992ac6f237a4"
}

Ceci affiche les informations concernant la ressource local_file.example qui est actuellement gérée par Terraform.

Exécuter terraform plan -destroy pour prévisualiser

Dans cette étape, vous apprendrez à générer un plan de destruction spéculatif. Avant de détruire des ressources, il est recommandé de prévisualiser exactement ce que Terraform a l'intention de faire. Cela empêche la suppression accidentelle d'une infrastructure critique. La commande terraform plan -destroy crée un plan d'exécution qui montre quelles ressources seront détruites, sans effectuer la destruction réelle.

Tout votre travail se déroulera dans le répertoire ~/project. Le script de configuration a déjà créé un fichier main.tf et l'a appliqué, créant un fichier nommé example.txt.

Maintenant, exécutez la commande suivante dans votre terminal pour voir le plan de destruction :

terraform plan -destroy

Vous verrez une sortie similaire à ce qui suit. Cette sortie détaille le plan pour détruire l'unique ressource gérée par notre configuration.

local_file.example: Refreshing state... [id=ec3adcab998872def2df6200fb03992ac6f237a4]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  ## local_file.example will be destroyed
  - resource "local_file" "example" {
      - content              = "This is an example file managed by Terraform." -> null
      - directory_permission = "0777" -> null
      - file_permission      = "0777" -> null
      - filename             = "./example.txt" -> null
      - id                   = "ec3adcab998872def2df6200fb03992ac6f237a4" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.

Confirmer la sortie du plan de destruction

Dans cette étape, nous allons analyser la sortie de la commande précédente. Comprendre le plan est crucial pour utiliser Terraform en toute sécurité.

Examinez la sortie de terraform plan -destroy. Remarquez ces éléments clés :

  1. Action sur la ressource : La ligne ## local_file.example will be destroyed (sera détruite) indique clairement l'action prévue. Le symbole - devant resource "local_file" "example" est la notation de Terraform pour la destruction. Toute ligne précédée de - indique que quelque chose sera supprimé.

  2. Changements d'attributs : La sortie montre tous les attributs de la ressource et indique qu'ils passeront à null, ce qui signifie suppression. Par exemple : - filename = "./example.txt" -> null.

  3. Résumé du plan : La ligne finale, Plan: 0 to add, 0 to change, 1 to destroy. (Plan : 0 à ajouter, 0 à modifier, 1 à détruire), fournit un résumé de haut niveau de l'ensemble du plan. C'est la ligne la plus importante à vérifier pour une confirmation rapide des actions planifiées.

En examinant ce plan, vous pouvez être certain que seule la ressource local_file.example sera affectée. Cette étape de confirmation est vitale dans les scénarios réels où une mauvaise configuration pourrait entraîner la destruction involontaire de ressources importantes. Il n'y a pas de commandes à exécuter dans cette étape ; elle est axée sur la compréhension du processus.

Exécuter terraform destroy pour supprimer les ressources

Dans cette étape, vous allez exécuter le plan de destruction. Maintenant que vous avez examiné le plan et que vous êtes confiant quant aux changements, vous pouvez procéder à la destruction réelle.

La commande terraform destroy affichera d'abord le même plan de destruction pour une révision finale, puis vous demandera confirmation avant de continuer.

Exécutez la commande suivante dans votre terminal :

terraform destroy

Terraform affichera à nouveau le plan et demandera votre approbation.

local_file.example: Refreshing state... [id=ec3adcab998872def2df6200fb03992ac6f237a4]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  ## local_file.example will be destroyed
  - resource "local_file" "example" {
      - content              = "This is an example file managed by Terraform." -> null
      - directory_permission = "0777" -> null
      - file_permission      = "0777" -> null
      - filename             = "./example.txt" -> null
      - id                   = "ec3adcab998872def2df6200fb03992ac6f237a4" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value:

Pour confirmer la destruction, tapez yes et appuyez sur Enter.

yes

Après confirmation, Terraform procédera à la destruction de la ressource et affichera la progression.

local_file.example: Destroying... [id=ec3adcab998872def2df6200fb03992ac6f237a4]
local_file.example: Destruction complete after 0s

Destroy complete! Resources: 1 destroyed.

Ceci confirme que la ressource local_file a été détruite avec succès.

Vérifier la suppression du fichier du système de fichiers

Dans cette étape, vous allez vérifier que la destruction de la ressource a eu l'effet escompté sur le système. Puisque notre ressource était un fichier local nommé example.txt, la destruction de la ressource aurait dû supprimer ce fichier du système de fichiers.

Vous pouvez le vérifier en essayant de lister le fichier à l'aide de la commande ls.

Exécutez la commande suivante dans votre terminal :

ls example.txt

Étant donné que le fichier a été supprimé, la commande échouera et vous verrez un message d'erreur du système d'exploitation. Cette erreur est le résultat attendu et confirme que la ressource a été détruite avec succès.

ls: cannot access 'example.txt': No such file or directory

Cette étape de vérification est importante car elle confirme que les actions de Terraform dans le fichier d'état se reflètent dans le monde réel.

Vérifier que le fichier terraform.tfstate est vide

Dans cette étape, vous allez inspecter le fichier d'état Terraform (terraform.tfstate) pour voir comment il reflète la destruction des ressources. Le fichier d'état est un fichier JSON qui garde une trace des ressources gérées par Terraform et de leur état actuel.

Une fois que toutes les ressources d'une configuration sont détruites, le fichier d'état n'est pas supprimé. Au lieu de cela, il est mis à jour pour indiquer qu'il ne gère plus aucune ressource. Le tableau resources à l'intérieur du fichier d'état deviendra vide.

Examinons le contenu du fichier d'état. Utilisez la commande cat pour l'afficher :

cat terraform.tfstate

Le résultat sera un objet JSON. Remarquez que la clé resources pointe maintenant vers un tableau vide [].

{
  "version": 4,
  "terraform_version": "1.13.3",
  "serial": 3,
  "lineage": "f25aaab8-c186-2b16-1bae-fe9ba25f81e4",
  "outputs": {},
  "resources": [],
  "check_results": null
}

Ceci confirme du point de vue de Terraform qu'il n'y a plus de ressources sous sa gestion pour cette configuration. L'état est maintenant propre.

Résumé

Félicitations pour avoir terminé ce laboratoire ! Vous avez réussi à parcourir le processus de destruction de l'infrastructure gérée par Terraform.

Dans ce laboratoire, vous avez appris :

  • L'importance de prévisualiser les changements avec terraform plan -destroy pour prévenir les suppressions accidentelles.
  • Comment lire et comprendre un plan de destruction, en prêtant attention au résumé et aux changements au niveau des ressources.
  • Comment exécuter la destruction des ressources en utilisant la commande terraform destroy et l'étape de confirmation requise.
  • Comment vérifier qu'une ressource a été détruite avec succès en examinant à la fois le système réel et le fichier d'état Terraform (terraform.tfstate).

Maîtriser le flux de travail de destruction est tout aussi important que de maîtriser la création de ressources. Cela garantit que vous pouvez gérer le cycle de vie complet de votre infrastructure de manière propre et sûre.