3
votes

Détruire une infrastructure terraform spécifique

J'ai créé une infrastructure pour différents environnements (testing / prod) avec terraform en utilisant des espaces de travail, des locaux et -backend-config donc il n'y a que deux fichiers différents, les autres fichiers sont communs pour les deux environnements.

Malheureusement, je ne trouve pas de moyen de détruire un environnement spécifique de la même manière (sans créer beaucoup de fichiers spécifiques pour chaque environnement).

Est-ce que je manque quelque chose? Y a-t-il un moyen de faire cela?

Toute aide serait appréciée.

Merci d'avance!

Cordialement,

Florent

EDIT: Merci pour les réponses, j'ai réussi à faire ce que je voulais faire en utilisant les espaces de travail, les locaux et backend-config!


0 commentaires

3 Réponses :


0
votes

Ne mélangez pas les commandes terraform init / workspace avec planifier / appliquer / détruire .

donc je suppose que vous exécutez avec les commandes ci-dessous pour définir le backend (où les fichiers tfstate sont enregistrés)

terraform plan -var-file=dev/terraformtfvars -var 'foo=bar'
terraform apply -var-file=dev/terraformtfvars -var 'foo=bar'
terraform destroy -var-file=dev/terraformtfvars -var 'foo=bar'

Ensuite, vous devez exécuter les commandes ci-dessous avec le même -var-file= ou -var Option 'foo = bar' pour toutes les commandes de plan, d'application et de destruction.

terraform init -backend-config=<path>
terraform get
terraform workspace select <env>

Faites-moi savoir si cela explique vos préoccupations ou non.


2 commentaires

Bonjour, merci pour votre réponse. Je ne suis pas sûr de comprendre pourquoi je ne devrais pas mélanger init / workspace et planifier / appliquer / détruire, pouvez-vous l'expliquer un peu plus? En ce moment, j'utilise des locaux dans mes fichiers .tf, donc si je comprends correctement ce que vous dites, je devrais créer un fichier séparé pour les variables et dire à terraform de l'utiliser avec l'argument -var-file? Je suis assez nouveau en utilisant terraform, désolé si certaines questions vous semblent stupides! Merci :)


J'ajuste la réponse, que vous pouvez gérer l'environnement avec -var-file = dev / terraformtfvars ou -var-file = prod / terraformtfvars



1
votes

Vous pouvez utiliser -target pour cibler des ressources spécifiques à détruire.

terraform destroy \
  -target module.default.aws_autoscaling_group.one \
  -target module.default.aws_autoscaling_group.two


0 commentaires

0
votes

En utilisant Terraform V 0.13

J'ai essayé de passer le fichier tfvars pour détruire une commande comme celle-ci:

terraform destroy -auto-approve -var-file="env/stage.tfvars"


0 commentaires