<p>tfenv écrase le fichier .terraform-version lors de l'installation de terraform</p>

Créé le 12 août 2019  ·  7Commentaires  ·  Source: tfutils/tfenv

Problème

J'utilise le fichier .terraform-version pour sélectionner la ou les versions de Terraform à utiliser pour une arborescence de répertoires spécifique. J'utilise régulièrement la méthode regex pour le contenu de .terraform-version . Si nécessaire, j'exécuterai tfenv install pour obtenir la version Terraform appropriée sur mon système si elle n'est pas présente. Cependant, ce faisant, tfenv écrase mon fichier .terraform-version avec le numéro de version exact qui a été installé.

Étapes à reproduire

$ echo "latest:^0.12" > .terraform-version
$ tfenv install
....
$ terraform version
Terraform v0.12.6
$ cat .terraform-version
0.12.6

Comportement prévisible

Je m'attendrais à ce que le contenu de .terraform-version reste le même à moins que je le modifie spécifiquement.

Installer

  • Système d'exploitation : MacOS Mojave (10.14.6)
  • Coque : Bash 5.0.7
  • Version TFEnv : 1.0.1
bug

Commentaire le plus utile

@e-nomem qui semble être le problème en effet. Compte tenu de la façon dont j'utilise tfenv, je pense qu'il est possible de ne jamais appeler tfenv-use à la fin de tfenv-install . Ce n'est pas parce que j'installe une version de Terraform que je veux l'utiliser maintenant ou que je l'ai comme version globale par défaut.

Cependant, ce serait bien si vous pouviez configurer ce comportement. Par exemple:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

Tous les 7 commentaires

C'est préoccupant. Fera enquête dès que possible

Cela semble provenir de l' appel à tfenv-use à la fin de tfenv-install , car tfenv-use écrase le fichier de version .
Il me semble que l'appel à tfenv-use n'est pas nécessaire pour l'installation, car seul le fichier de version globale doit être mis à jour, et uniquement si le fichier de version globale n'existe pas déjà.

@e-nomem qui semble être le problème en effet. Compte tenu de la façon dont j'utilise tfenv, je pense qu'il est possible de ne jamais appeler tfenv-use à la fin de tfenv-install . Ce n'est pas parce que j'installe une version de Terraform que je veux l'utiliser maintenant ou que je l'ai comme version globale par défaut.

Cependant, ce serait bien si vous pouviez configurer ce comportement. Par exemple:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

J'aimerais certainement un moyen de désactiver au moins l'écrasement, même s'il s'agit d'une variable shell. Nous déployons un tas de mises à jour compliquées de tf 0.11 à 0.12 et nous voulons suivre la dernière 0.12 en général, mais chaque fois que quelqu'un exécute tfenv install depuis l'extérieur de CI, la version .terraform est mise à jour avec la version spécifique Comme dans l'exemple. Je suis d' tfenv install pour ne pas casser la fonctionnalité existante de

L'écrasement du fichier .terraform-version spécifique au projet rend presque l'utilisation du fichier inutile et présente également le risque que quelqu'un valide involontairement la modification du contrôle de source. Nous utilisons le fichier dans un dépôt pour _fixer_ la version utilisée pour le projet, donc l'écraser avec une commande tfenv est plutôt problématique.

J'accepte que l'utilisation de tfenv ne modifie pas le fichier .terraform-version.
L'empêcher de le faire embrouillera probablement les utilisateurs qui émettent un tfenv, puis n'obtiendront pas la version qu'ils ont demandée car ils ont un fichier de version.
J'apprécie les idées sur l'amélioration de cette expérience utilisateur, mais c'est sûrement la bonne chose à faire pour arrêter l'écrasement.

Je ne sais pas quel genre de pensées vous recherchez, mais à mon avis, tfenv ne devrait _jamais_ écrire dans ce fichier, même s'il n'existe pas. Il doit traiter ce fichier comme _lecture seule_. Il appartient aux _utilisateurs_ de tfenv de créer ce fichier, s'ils le souhaitent, puis de le valider dans leurs propres dépôts s'ils souhaitent utiliser une version fixe de Terraform pour leurs projets.

Les commandes tfenv install et tfenv use doivent rechercher le fichier .terraform-version lorsqu'aucune version n'est explicitement spécifiée sur la ligne de commande. Si le fichier existe, les commandes doivent l'utiliser pour déterminer quelle version utiliser avec la commande, et s'il n'existe pas, les commandes doivent échouer, indiquant que l'utilisateur doit soit spécifier une version sur la ligne de commande, soit dans un .terraform-version Fichier .terraform-version doit être ignoré.

Cette page vous a été utile?
0 / 5 - 0 notes