Aller au contenu principal

Asdf le maxi choco du Devops !

En tant que spécialiste DevOps, je suis constamment à la recherche d'outils qui rendent la gestion des environnements de développement plus fluide et efficace. Dans cette quête, j'ai découvert asdf-vm appelé aussi asdf qui permet d'installer plusieurs versions de différents outils et langages sur un même système, offrant ainsi une flexibilité et une efficacité accrues pour les développeurs et les administrateurs système.

Les Avantages d'asdf

L'un des principaux défis en développement et en administration système dans un contexte DevOps est de maintenir un environnement de développement cohérent et à jour. Ceci est particulièrement important lorsqu'on travaille avec de multiples projets, langages et outils, chacun ayant ses propres versions et dépendances. Ici, asdf intervient comme une solution élégante et puissante.

asdf se distingue par sa capacité à installer plusieurs langages et outils de développement. Il remplace avantageusement l'utilisation de multiples gestionnaires de versions spécifiques à un langage, tels que nvm pour Node.js ou pyenv pour Python. Cela simplifie considérablement la configuration de l'environnement de développement, car vous n'avez besoin que d'un seul outil pour gérer toutes vos versions.

asdf permet de définir des versions globales ou locales pour chaque projet. Cela garantit que chaque membre de l'équipe travaille avec la même configuration, évitant ainsi les problèmes liés aux différences de versions.

En résumé, asdf apporte une solution unifiée pour gérer les multiples versions d'outils et de langages, facilitant ainsi la vie des développeurs et des administrateurs système. Sa polyvalence et sa facilité d'utilisation en font un outil incontournable dans l'arsenal DevOps.

Installation d'asdf

L'installation de asdf est un processus simple et direct, qui peut être adapté à différents systèmes d'exploitation. Voici les étapes générales pour installer asdf sur un système Unix-like, tel que Linux ou macOS.

Tout d'abord, clonez le dépôt GitHub d'asdf dans votre répertoire utilisateur. Ouvrez votre terminal et exécutez la commande suivante :

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1

Ensuite, vous devez configurer votre shell pour utiliser asdf. Si vous utilisez Bash, Zsh ou un autre shell commun, ajoutez les lignes suivantes à votre fichier de configuration shell (par exemple, .bashrc, .zshrc).

Pour Bash :

echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc

Pour Zsh :

echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.zshrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.zshrc

Après avoir ajouté ces lignes, rechargez votre fichier de configuration shell. Par exemple, pour Bash, utilisez :

source ~/.bashrc

Certaines dépendances peuvent être nécessaires, selon les langages et outils que vous prévoyez d'utiliser avec asdf. Par exemple, pour les plugins Ruby et Node.js, vous devrez peut-être installer certaines bibliothèques. Vous pouvez trouver ces informations spécifiques dans la documentation des plugins sur le site d'asdf.

Pour vérifier que asdf a été correctement installé, exécutez :

asdf --version

Si cette commande retourne la version d'asdf, alors l'installation a été réussie. Vous êtes maintenant prêt à commencer à utiliser asdf pour gérer les versions de vos outils de développement.

Utilisation d'asdf

Une fois asdf installé sur votre système, sa puissance réside dans sa capacité à gérer facilement différentes versions de multiples outils et langages de programmation. Cela se fait en quelques commandes simples, rendant l'expérience de développement plus fluide et moins sujette aux conflits de versions.

Ajout de Plugins

Chaque langage ou outil dans asdf est géré via un plugin. Pour ajouter un plugin, par exemple pour Node.js, utilisez la commande suivante :

asdf plugin-add nodejs

Liste des versions

Après avoir ajouté le plugin désiré, vous pouvez lister les versions disponibles de l'outil ou du langage :

asdf list all python | grep "^3.*"

...

*11.6
*11.7
*12.0
*12-dev
*12.1
*13.0a2
*13-dev

Installation d'une Version Spécifique

Vous pouvez installer des versions spécifiques de cet outil. Par exemple, pour installer une version spécifique de python :

asdf install python 3.12.1

Ceci installe la version 3.12.1 de python.

Définir une Version Globale ou Locale

Avec asdf, vous pouvez définir des versions globales (pour tout le système) ou locales (pour un projet spécifique). Pour définir une version globale :

asdf global python 3.12.1

Et pour une version locale dans un projet spécifique :

cd mon_projet
asdf local nodejs 3.10.11

Mise à jour des Versions et des Plugins

asdf facilite également la mise à jour des versions et des plugins. Pour mettre à jour un plugin :

asdf plugin-update python

Et pour installer une nouvelle version après sa sortie :

asdf install python [nouvelle_version]
asdf global python [nouvelle_version]

Mise à jour d'asdf

Pour la mise à jour vers la dernière release stable, asdf intègre son propre mécanisme d'update :

asdf update

Pour mettre à jour tous les plugins :

asdf plugin update --all

Vérifier les dernières versions disponibles de vos outils :

asdf latest --all
awscli  2.8.0   missing
bat     0.22.1  installed
direnv  2.32.1  installed
docker-compose-v1       docs-v1.8.0-2016-08-03  missing
exa     0.10.1  installed
gohugo  0.104.3 missing
hadolint        2.10.0  installed
helm    3.10.0  missing
jq      1.6     installed
k9s     0.26.6  missing
kind    0.16.0  installed
krew    0.4.3   installed
kubectl 1.25.2  installed
kubectx 0.9.4   installed
kustomize       4.5.7   installed
minikube        1.27.0  installed
mkcert  1.4.4   installed
nomad   1.3.5   installed
packer  1.8.3   installed
polaris 7.1.5   installed
popeye  v0.10.1 installed
rclone  1.59.2  installed
tekton-cli      0.26.0  installed
terraform       1.3.1   missing
tflint  0.41.0  missing
tfsec   1.28.0  installed
trivy   0.32.1  missing
vault   1.11.4+ent      missing
yq      4.27.5  installed

Tips : Mettre à jour tous les outils

for tool in $(asdf plugin list); do
  asdf install "${tool}" latest  \
    &&  asdf global "${tool}" latest  \
    &&  echo "${tool} set globally"
done

Désinstaller une version d'un outil ou un plugin

Pour désinstaller une version d'un outil :

asdf uninstall <nom du plugin> <version>

Désinstaller un plugin :

asdf plugin remove <nom du plugin>

Utilisation d'un fichier de configuration .tool-versions

Dans un contexte d'équipe, asdf aide à synchroniser les environnements de développement de tous les membres. En partageant simplement les fichiers de configuration .tool-versions, chaque membre de l'équipe peut aligner son environnement sur les versions définies pour le projet.

Supposons que vous travaillez sur un projet nécessitant une version spécifique de Node.js et Ruby. Avec asdf, vous pouvez définir ces versions dans le fichier .tool-versions à la racine de votre projet :

python 3.12.1
poetry 1.7.1

Chaque fois que quelqu'un se place dans le répertoire de ce projet, asdf utilisera automatiquement les versions spécifiées pour python et poetry.

astuce

Lorsque vous installez un plugin, asdf met à jour un fichier .tool-versions dans votre répertoire personnel. Alors, sauvegardez le quelque part, pour migrer de machines rapidement !

Pourquoi je vous déconseille d'utiliser asdf dans vos pipelines CI/CD ?

attention

En parcourant cet outil, je me suis fait cette réflexion : pourquoi ne pas l'utiliser lors de la construction d'image Docker. Très mauvaises idées ! Vous devez garantir la sécurité de votre supply chain. Les scripts des plugins sont à la main de personnes que vous ne connaissez pas. Il est donc très facile d'introduire du code malveillant dans des scripts d'installation

Conclusion

En tant que spécialiste DevOps, je considère asdf comme un outil essentiel dans l'arsenal de tout développeur ou administrateur système. Sa polyvalence, sa simplicité d'utilisation et sa capacité à gérer de multiples langages et outils font de asdf un choix incontournable pour tout environnement de développement moderne.

D'ailleurs, c'est pour cette raison qu'ASDF a rejoint ma liste d'outils DevOps Indispensables !

Plus d'infos

Pour vous aider à mieux comprendre et à utiliser asdf, voici une liste utile de liens vers le projet et sa documentation. Ces ressources vous fourniront des informations détaillées et des guides pratiques pour tirer le meilleur parti de cet outil.

  • Site Officiel de asdf : https://asdf-vm.com/ Cette page offre un aperçu général de asdf, incluant ses fonctionnalités principales et les raisons pour lesquelles vous pourriez vouloir l'utiliser.

  • Documentation asdf : https://asdf-vm.com/guide/ Ce lien mène à la documentation complète de asdf, où vous pouvez trouver des informations détaillées sur l'installation, la configuration et l'utilisation de l'outil.