ASDF is a linux tool that allows you to manage multiple runtime versions. But.. what that means?.
Imagine that you have to work with different Helm charts and Terraform infrastructures; or maybe you want to test a new cli release for Popeye, Etcd, Github Cli o Firebase. You should download latest release try it and go back to the last one that worked fine.
With ASDF you can switch between versions whenever you want, set that version at three stages: Global, Local and Shell.
Are you interested? OK! Then you should try it. Download you release from it's official Github page: https://github.com/asdf-vm/asdf
You will need to clone the repo:
git clone https://github.com/asdf-vm/asdf.git ${HOME}/.asdf
And then add that path to your $PATH:
export PATH=$PATH:${HOME}/.asdf
Now you need to update the plugin list:
CMD> asdf plugin list all Output sample: [...] kubebuilder https://github.com/virtualstaticvoid/asdf-kubebuilder.git kube-capacity https://github.com/looztra/asdf-kube-capacity.git kubectl *https://github.com/Banno/asdf-kubectl.git kubectl-bindrole https://github.com/looztra/asdf-kubectl-bindrole.git kubectx *https://gitlab.com/wt0f/asdf-kubectx.git kubefedctl https://github.com/kvokka/asdf-kubefedctl.git kubeseal https://github.com/stefansedich/asdf-kubeseal.git kubesec https://github.com/vitalis/asdf-kubesec.git kubespy https://github.com/jfreeland/asdf-kubespy.git kubeval https://github.com/stefansedich/asdf-kubeval.git terraform *https://github.com/Banno/asdf-hashicorp.git terraform-docs *https://github.com/looztra/asdf-terraform-docs.git terraform-lsp https://github.com/bartlomiejdanek/terraform-lsp.git terraform-validator https://github.com/looztra/asdf-terraform-validator.git terragrunt https://github.com/lotia/asdf-terragrunt.git [...]
We want to install Kubectl so let's check which versions are available:
CMD> asdf list all kubectl Output: 1.17.14 1.17.15 1.17.16 1.17.17 1.18.12 1.18.13 1.18.14 1.18.15 1.18.16 1.18.17 1.19.4 1.19.5 1.19.6 1.19.7 1.19.8 1.19.9 1.20.0-rc.0 1.20.0-beta.2 1.20.0 1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.21.0-beta.0 1.21.0-rc.0 1.21.0-alpha.1 1.21.0-beta.1 1.21.0-alpha.2 1.21.0-alpha.3
Mmm... lot of them, so lets install 1.17.15 version and 1.18.13:
CMD> asdf install kubectl 1.17.15 CMD> asdf install kubectl 1.18.13
Done. Let's check that everything is installed properly:
CMD> asdf list Output: kubectl 1.17.15 1.18.13
Nice! Seems that both versions are installed properly, now let's work with them:
First, let's try and set v1.17.15:
CMD> asdf shell kubectl 1.17.15 CMD> kubectl version --client=true --short=true Client Version: v1.17.16-rc.0
OK! Let's try v1.18.13:
CMD> asdf shell kubectl 1.18.13 CMD> kubectl version --client=true --short=true Client Version: v1.18.13
Nice! So I managed to install both versions ans switch in the same shell session. If I would like to set for as a recurrent version, I would run "asdf local kubectl 1.1x.y" or maybe for a global environment.
This is one of the best linux tools ever. I could manage almost any runtime just in seconds. Really useful and productive!
If you want to check how I manage my tools, check my dotfile Github repository: https://github.com/cosckoya/.dotfiles
Enjoy!
Top comments (0)