とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

asdfが便利だったのでanyenvから乗り換えた

anyenv使ってますか?私は使っていました。っというのも最近とある案件でasdfをつかっているのをみて、ちょっと試してみたところ、なかなかよかったのでこちらに乗り換えました。

asdf-vm.com

asdfってなんじゃろ?

asdfはツールやプログラミング言語のバージョンを管理するもので、**envを1つにまとめたようなツールです。 anyenvとの違いは、anyenvは**envツールをインストールするだけで、各言語のバージョン管理は**env任せになるのに対し、asdfはasdfを起点に管理を行うというところです。また、プラグインを追加することで、管理できるツールや言語を増やせすこともできます。

  • コミュニティで提供しているプラグイン

https://github.com/orgs/asdf-community/repositories

  • asdf-pluginトピック

https://github.com/topics/asdf-plugin

インストール

インストール方法は公式ドキュメントのGetting Startedに色々と書いてありますので、ご自身の環境に合わせてセットアップしてみてください。macOSならHomebrewが簡単でしょうか。asdfはただのシェルルスクリプトで、asdf.shをsourceすればすぐに使い始められるので、私はZshのプラグインマネージャーに任せています。asdfはgit、curl、gpg、gawkに依存しています。もしasdfをインストールする環境にこれらのツールが入っていなければ、入れておいてください。

使ってみる

私が所属するOpsチームではTerraformのバージョンを固定して使っていますので、Terraformを例に使っていきたいと思います。

github.com

それではまず作業ディレクトリを作成します。

mkdir workdir
cd workdir

バージョンを固定するために.tool-versionsというファイルを作っていきます。

touch .tool-versions

中身は空で大丈夫です。後で出てくるバージョン指定のコマンドを実行すると自動で挿入されます。もし、チーム内でバージョンを固定する場合は、.tool-versionsをリポジトリに含めてください。

プラグインを追加します。

asdf plugin-add terraform https://github.com/asdf-community/asdf-hashicorp.git

この段階ではまだプラグインが追加されただけで、実際にツールも言語も使うことができません。インストールしていきます。

asdf list all terraform               # インストールできるバージョンを確認
asdf install terraform 1.2.7          # このバージョンのソースコードを~/.asdf以下にインストール
asdf local terraform 1.2.7            # 作業ディレクトリ以下でどのバージョンを使うか指定

今回はなんとなくバージョン1.2.7にしてみました。先ほど空で作った.tool-versionsの中身を確認してみてください。

terraform 1.2.7

ツールとそのバージョンが指定されていれば成功です。

このように.tool-versionsでツールとバージョンが指定されていれば、同じリポジトリで作業する人は以下のコマンドを実行するだけで、同じツール、同じバージョンを使うことができます。

asdf install

実際に指定したバージョンが使えるかみてみましょう。

terraform version

もしcommand not foundなどで実行できなければ、PATHが通っていないか、ここまでの手順に問題があったのだと思います。もう一度Getting Startedを参考に進めてみてください。