TFSwitch c’est quoi ?
TFSwitch est un petit utilitaire qui vous permet de jongler entre les différentes versions de terraform, vous simplifiant la vie au quotidien, surtout si vous respectez les quelques bonnes pratiques qui suivent dans l’article. Mais tout d’abord, TFSwitch est disponible ici : https://tfswitch.warrensbox.com/, vous y trouverez tout ce qu’il faut pour l’installer et le configurer. Notez également qu’il est compatible avec opentofu.
Comment ça marche ?
Une fois que vous l’avez installé, il vous suffit de lancer la commande tfswitch depuis un terminal et de sélectionner une version de terraform dont vous avez besoin :
Vous sélectionnez la version de terraform souhaitée, et le tour est joué :
On change de version de la même façon :
Petit plus, les versions que l’on a sélectionné récemment se mettent sur le haut de la pile :
Et pourquoi c’est si bien ?
Comme je vous le disais, il faut respecter à mon sens quelques bonne pratiques pour en tirer le maximum : deux pour être précis.
La première bonne pratique, c’est de définir dans vos fichiers terraform la version de terraform utilisée pour votre projet : celle-là, c’est un must have, au-delà de l’outil.
L’avantage quand vous la respectez, c’est que tfswitch cherche dans vos fichiers terraform le bloc de configuration terraform et notamment la valeur du paramètre required_version : il télécharge alors automatiquement la version compatible avec celle-ci, sans passer par le menu de sélection.
J’ai créé trois dossiers chacun contenant un code minimum terraform pour pouvoir faire un terraform init, comme suit :
Et voici le contenu d’un des fichiers, les autres étant identiques à la version près :
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.73.0"
}
}
required_version = "~> 1.9.8"
}
provider "aws" {
profile = "poc"
region = "eu-west-3"
}
Quand on se positionne dans les dossiers, voici ce le résultat de la commande tfswitch :
Dans chaque dossier, la bonne version est téléchargée directement, comme le prouve la commande terraform -version. Un point à noter : c’est la version 1.6.6 qui a été téléchargée et pas la version 1.6.1 comme attendu : pourquoi ? Tout simplement parce que tfswitch respecte les conventions de terraform. La version est définie sous la forme : required_version = “~> 1.6.1”, ce qui veut dire que les versions majeures et mineures (1 et 6) doivent être respectées mais que la version de patch peut être égale ou supérieure à 1 ==> tfswitch télécharge alors la dernière version qui respecte cette règle. Plus de détails sur la gestion des versions de terraform ici :https://developer.hashicorp.com/terraform/tutorials/configuration-language/versions
La seconde bonne pratique, qui est plus une astuce de fainéant qu’une vraie bonne pratique, c’est d’utiliser un alias sur la commande tfswitch et sur la commande terraform !
Avant d’utiliser tfswitch j’avais déjà un alias pour terraform, je l’avais raccourci en tf (et oui 2 lettres c’est vachement plus rapide que 9, même avec de l’auto complétion !).
Alors pour le conserver et bénéficier de tfswitch par la même occasion, je l’ai juste remplacé par :
Et donc si je reprends mon exemple de tout à l’heure, je n’ai qu’à lancer tf -version pour obtenir les bonnes versions de terraform dans mes différents dossiers :
Et ça fonctionne évidemment pour toutes les commandes terraform :
En conclusion :
En respectant ces deux bonnes pratiques, je suis sûr de toujours être positionné sur la bonne version de terraform dans chacun des mes projets : un vrai gain de temps au quotidien, j’espère vous avoir convaincu ;-) Et c’est quand même une bonne pratique de faire les montées de version de terraform sur nos projets, alors même si on n’a pas toujours le temps de le faire, essayons quand même de temps en temps ;-)