DEV Community

Cover image for ASDF - Painel de Ferramentas
andremulin
andremulin

Posted on

2

ASDF - Painel de Ferramentas

Se você trabalha com Terraform em múltiplos ambientes, é provável que você já tenha se deparado com versões diferentes do Terraform. Dai é ficar trocando de versão em cada projeto. Isso é chato.
O mesmo ocorre quando vc possui projetos com versões diferentes de Nodejs entre outros.
O melhor dos mundos seria ter todas as versões utilizamos instaladas e serem automaticamente selecionadas em cada projeto, sem ter que utar um executável diferente. Melhor ainda, que fosse algo fácil de utilizar em time, fazendo com que todos possam ter a mesma caixa de ferramentas.

É ai que o asdf entra em ação. Com objetivo de gerenciar multiplos versões de runtimes em um único lugar, o asdf facilita a instalação de múltiplas versões e seleção de da versão necessária dependendo do contexto de utilização.

Link: https://asdf-vm.com/

Instalação

O asdf possui apenas duas dependências, o curl e o git.

Faça o clone do repositório do projeto:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1
Enter fullscreen mode Exit fullscreen mode

Configure o bash:

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Enter fullscreen mode Exit fullscreen mode

Pronto, o asdf já estará disponível.

Caso você utilize macOS ou queria outras formas de instalação, acesse https://asdf-vm.com/guide/getting-started.html#_3-install-asdf para mais opções.

Adicionando plugins

Os runtimes ou ferramentas gerenciadas pelo asdf são chamadas de plugins. Sendo assim, para que o asdf gerencie uma ferramenta, é necessário que seja adicionar o plugin da mesma.
Abaixo segue o exemplo do plugin terraform:

asdf plugin add terraform
Enter fullscreen mode Exit fullscreen mode

Depois de adicionar o plugin, será necessário efetuar a instalação de uma das versões.

Abaixo segue o exemplo da instalação da última versão do terraform:

asdf install terraform latest
Enter fullscreen mode Exit fullscreen mode

Caso queria instalar alguma versão especifica, basta informar o número ao invés de latest. Ex.:

asdf install terraform 0.15.31
Enter fullscreen mode Exit fullscreen mode

Pronto, já temos duas versões do terraform instaladas.

asdf list terraform
0.15.4
1.0.6
Enter fullscreen mode Exit fullscreen mode

A lista completa de plugins disponíveis pode ser acessada em https://github.com/asdf-vm/asdf-plugins.

Configurando

A configuração do asdf é simples. Através de um arquivo com nome .tool-versions, que quando existente na pasta, faz com que o asdf utilize a versão indicada da ferramenta ou runtime.

O conteúdo do .tool-versions deverá conter o nome do plugin e a versão que deverá ser utilizada:

terraform 0.15.4
Enter fullscreen mode Exit fullscreen mode

Link: https://github.com/andremulin/asdf-example/blob/main/terraform/.tool-versions

A configuração Local é utilizada em cada projeto com objetivo de definirmos uma versão especifica dos runtimes ou ferramentas para o projeto em questão.

Já para definir globalmente quais versões você quer utilizar, o arquivo .tool-version precisará ser criado na pasta home do seu usuário:

~/.tool-versions
Enter fullscreen mode Exit fullscreen mode

Resumo

Tendo seguido essas passos, sua estação de trabalho já terá a capacidade de alternar entre versões diferentes de Terraform. Agora você precisa adicionar o arquivo .tool-versions em seus projetos para que o asdf possa reconhecer a versão a ser utilizada.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay