3
votes

Comment rétrograder Terraform vers une version précédente?

J'ai installé une version (0.12.24) de Terraform qui est postérieure à la version requise (0.12.17) spécifiée dans notre configuration. Comment puis-je revenir à cette version antérieure? Mon système est Linux Ubuntu 18.04.


2 commentaires

Voir askubuntu.com/questions/92019/… - vous pouvez supprimer la mauvaise version avec "apt remove packagename" et réinstaller la version spécifique que vous voulez


vous pouvez faire releases.hashicorp.com/terraform/0.12.17/...


5 Réponses :


6
votes

Tant que vous êtes sous Linux, procédez comme suit dans le terminal:

wget https://releases.hashicorp.com/terraform/0.12.17/terraform_0.12.17_linux_amd64.zip 

unzip terraform_0.12.17_linux_amd64.zip

mv terraform /usr/local/bin/terraform

terraform --version

Installez la nouvelle version:

rm -r $(which terraform)

C'est ça mon ami.


4 commentaires

Merci, très utile, TIL il y a un site de publication.


Bien sûr, vous pouvez le trouver sur son GitHub, via l'option "releases".


C'est beaucoup plus facile avec docker


Ou utilisez github.com/tfutils/tfenv avec lequel vous n'avez pas à gérer une image Docker.



0
votes

Vous ne devriez plus installer terraform dans ubuntu. De manière générale, l'industrie est maintenant passée aux dockers. Vous pouvez installer docker comme ceci:

docker run -v $PWD:/work -w /work -v ~/.aws:/root/.aws hashicorp/terraform:0.12.17 init

Une fois installé, vous pouvez exécuter terraform comme ceci:

sudo apt install -y curl
curl -LSs get.docker.com | sh
sudo groupadd docker
sudo usermod -aG docker $USER

En supposant que votre répertoire .aws contient vos informations d'identification aws. Sinon, vous pouvez laisser cette liaison de montage ( -v ~/.aws:/root/.aws ) en dehors de la commande et cela fonctionnera avec le schéma que vous choisissez d'utiliser. Vous pouvez changer la version de terraform que vous utilisez avec facilité, sans rien installer.


Il y a des avantages significatifs dans cette approche par rapport à la réponse acceptée. Le premier est la facilité de gestion des versions. Si vous avez installé terraform à l'aide d'un gestionnaire de paquets, vous pouvez soit le désinstaller et installer la version dont vous avez besoin, soit jouer avec des alternatives Linux (si votre distribution les prend en charge, ou si vous utilisez Linux, ou un gestionnaire de paquets quelconque - - vous pourriez utiliser Windows et avoir téléchargé et exécuté un programme d'installation). Bien sûr, cela peut être une chose ponctuelle, auquel cas vous le faites une fois et tout va bien pour toujours, mais d'après mon expérience, ce n'est pas souvent le cas car la plupart des équipes doivent mettre à jour les versions en raison des contrôles de sécurité. , et les équipes qui ne sont pas tenues de mettre à jour régulièrement le logiciel devraient probablement l'être.

Si ce n'est pas une chose ponctuelle ou si vous n'aimez pas trop jouer avec la gestion des versions, vous pouvez simplement télécharger le binaire, comme le souligne un commentaire sur cet article. Il est assez facile de créer un schéma de répertoires pour chaque version, ou simplement de supprimer celui que vous utilisez et de le remplacer complètement. Cela peut convenir assez bien à votre cas d'utilisation. Allez sur le site Web approprié (j'ai oublié lequel - Hashicorp ou la page des versions du repo GitHub, vous pouvez toujours le rechercher, bien que cela prenne du temps aussi - ce qui est mon point) et trouvez la bonne version et téléchargez-la.

Ou, vous pouvez simplement taper docker run hashicorp/terraform:0.12.17 et la bonne version sera automatiquement extraite pour vous d'un dépôt de confiance en ligne préconfiguré.

Ainsi, l'installation de nouvelles versions est plus facile, et bien sûr, docker exécutera la somme de contrôle pour vous, et aura également analysé l'image à la recherche de vulnérabilités et signalé les résultats aux développeurs. Bien sûr, vous pouvez faire tout cela vous-même, car comme l'indique le commentaire sur cette réponse, il ne s'agit que d'un binaire compilé statiquement, donc pas de tracas, installez-le et partez.

Seulement, ce n'est toujours pas si simple. Un autre avantage serait la facilité avec laquelle vous pourriez incorporer la version conteneurisée dans des configurations de composition de docker ou l'exécuter dans K8S. Encore une fois, vous n'avez peut-être pas besoin de cette capacité, mais étant donné que l'industrie évolue de cette façon, vous pouvez apprendre à le faire à l'aide des outils standardisés maintenant et appliquer ces connaissances partout, ou vous pouvez apprendre une technique différente pour installer chaque outil que vous utilisez. maintenant (récupérez-en quelques-uns des versions de GitHub et copiez le binaire, d'autres vous devriez utiliser le gestionnaire de paquets, d'autres que vous devriez télécharger, décompresser et installer, d'autres encore devraient être installés à partir du site Web du fournisseur à l'aide d'un programme d'installation, etc. etc. etc.) . Ou, vous pouvez simplement apprendre à le faire avec docker et appliquer la même astuce à tout. La vaste gamme d'outils et de logiciels modernes est désormais présentée de cette manière «standard». C'est vraiment le but des conteneurs - la standardisation. Une approche unique s'adapte plus ou moins à tout.

Ainsi, vous obtenez une approche standardisée qui convient à la plupart des logiciels modernes, une sécurité supplémentaire et une gestion des versions plus facile, et tout cela fonctionne presque exactement de la même manière, quel que soit le système d'exploitation sur lequel vous utilisez (presque - cela couvre Linux, Windows, osx, raspbian, etc.).

Il existe d'autres avantages liés à la sécurité autres que ceux spécifiquement mentionnés ici, qui s'appliquent dans un environnement d'entreprise, mais je n'ai pas le temps d'entrer dans les détails ici, mais si vous étiez intéressé, vous pourriez regarder des choses comme Aqua et Prisma. Cloud Compute. Et bien sûr, vous avez également la possibilité d'étendre le conteneur hashicorp / terraform de base et d'ajouter vos valeurs par défaut préférées.

Personnellement, je n'ai pas d'autre choix que d'exécuter Windows (sans wsl), mais je suis autorisé à exécuter docker, j'ai donc un conteneur `` couteau suisse '' avec des alias pour exécuter d'autres conteneurs via le socket docker partagé. Cela signifie que je me rapproche le plus possible d'un environnement Linux réel lorsque j'exécute Windows. Je dispose régulièrement de mon conteneur de travail et je ne voudrais pas le reconstruire chaque fois que je change la version d'un outil que j'utilise, donc j'utilise un alias pour la dernière version de ces outils, et les nouvelles versions sont automatiquement intégrées mon espace de travail. Si cela se rompt lorsque je le fais, je peux spécifier une version dans l'alias et continuer à travailler jusqu'à ce que je sois prêt à mettre à niveau. Si je dois rétrograder un outil lorsque je travaille sur le code de quelqu'un d'autre, je change simplement l'alias à nouveau et tout fonctionne avec l'ancienne version. Il me semble que ce flux de travail est le plus simple que j'aie jamais utilisé, et je le fais depuis 35 ans.

Je pense que docker et cette approche de l'ingénierie sont plus simples, plus propres et plus sûrs que tout ce qui l'a précédé. Je recommande fortement à tout le monde de l'essayer.


5 commentaires

Quel est l'avantage d'exécuter un binaire Go lié statiquement sans dépendances dans un conteneur Docker ici? Vos deux premières phrases sont très fortement formulées pour ce que je considérerais comme une déclaration controversée pour l'exécution d'applications de ligne de commande localement. La réponse serait grandement améliorée en indiquant les avantages de faire cela par rapport à simplement coller le binaire sur votre chemin.


Je ne peux pas dire si vous me demandez simplement d'améliorer ma réponse ou si vous pensez vraiment que c'est une mauvaise idée. Je viens de vérifier votre profil et vous semblez assez senior, alors je vous ai donné le bénéfice du doute et développé ma réponse. Désolé, je n'ai pas le temps de réduire cela. Mais la réponse est: sécurité, standardisation et approche x-platform.


Ce que je veux dire, c'est que vous avez fait une déclaration très affirmée au début de la réponse, mais que vous n'avez pas expliqué pourquoi. La réponse n'a été utile que pour quelqu'un qui sait pourquoi ou qui est heureux de suivre aveuglément les choses. La modification améliore les choses en expliquant pourquoi vous pensez que c'est une bonne idée.


J'avais espéré que c'était ce que vous vouliez dire. Merci pour la contribution, c'est apprécié.


Cette réponse est très utile et éclairante, merci pour l'édition de suivi @Software Engineer et pour l'avoir poussé sur ydaetskcoR



1
votes

Il y a d'autres réponses valables ici. Cela peut être utile si vous avez une situation, comme moi, où vous avez besoin de plusieurs versions de Terraform lors d'une migration d'une ancienne version vers une nouvelle version.

J'utilise tfenv pour cela: https://github.com/tfutils/tfenv

Il fournit un script terraform modifié qui recherche l'exécutable terraform correct basé sur une valeur par défaut ou basé sur le fichier .terraform-version le plus proche dans le répertoire ou les répertoires parents. Cela nous permet d'utiliser une version de Terraform 0.12 pour nos éléments migrés et de conserver Terraform 0.11 pour nos éléments hérités.


0 commentaires

3
votes

Vous pouvez également consulter Terraform Switcher - cela vous permettra de basculer facilement entre différentes versions.


0 commentaires

1
votes

Supprimer la version existante - sudo apt remove terraform

Afficher une liste des versions disponibles - sudo apt list -a terraform

terraform/xenial 0.13.5 amd64
terraform/xenial 0.13.4-2 amd64
... etc

Installez la version souhaitée

sudo apt-get install terraform=0.13.4-2


0 commentaires