Vagrantが開発言語をRubyからGo言語へ切り替え、次のメジャーバージョンアップ「Vagrant 3.0」で。現バージョンとの互換性は維持
今回は「Vagrantが開発言語をRubyからGo言語へ切り替え、次のメジャーバージョンアップ「Vagrant 3.0」で。現バージョンとの互換性は維持」についてご紹介します。
関連ワード (互換性維持用、実装、改善等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
HashiCorpは、仮想環境をプログラミングできるツール「Vagrant」の開発言語を、これまでのRubyからGo言語切り替えることを明らかにしました。
Learn more about the new features, capabilities, and improvements we’re making on our journey toward Vagrant 3.0. https://t.co/49scP0FdqW
— HashiCorp (@HashiCorp) June 11, 2021
時期未定ながら、今後約1年のあいだに登場するVagrant 2.3、Vagrant 2.4を経て、Vagrant 3.0でGo言語への移行が完了する予定。
Vagrant 3.0では、デフォルトで新たなAPIやHCL(HashiCorp Configuration Language)によるコンフィグレーションなどに対応。また、Rubyベースのコンフィグレーションやプラグインを検出するとRubyや互換性維持用ヘルパーツールなどを導入し、最大限の互換性維持を図るとしています。
Vagrant 3.0では主に次のような新機能が追加される予定です。
リモートマシンのVagrantを操作可能に
Vagrantは基本的にローカルマシン内の仮想マシンを操作するためのツールでしたが、クライアント/サーバアーキテクチャを採用することで、リモートマシン内のVagrantを操作できるようになります。
これにより非力なクライアントマシンからリモート先の強力なマシン内のVagrantを操する、といった使い方が可能になります。
ヘッドレスでの操作が可能に
これまでWindowsでは特権ユーザーの操作が必要な場合にはユーザーアカウント制御のダイアログボックスが表示されるため、それをクリックする必要がありました。Vagrant 3.0では特権的なサービスが可能になるため、こうしたユーザー操作が不要となり、ヘッドレスな操作が可能になります。
グローバルな構成管理が可能に
現在のVagrantのユーザーは自分の設定を参照することしかできませんが、新しいサーバベースのアプローチでは、グローバルに適用可能なVagrantの設定を管理できるようになり、設定のデータベースへの保存も可能になります。これにより設定が失われるなどの事故に強くなるなど、Vagrantの回復力の強化にもつながります。
プラグインAPIの改善とポータビリティの強化
現在のRubyベースのプラグインは引き続きサポートされ、それに加えて新たなAPIとGRPCのサポートによってGo言語やそれ以外の言語によるプラグインの開発が可能になります。新たなAPIはVagrantのリリースに依存せず、プラットフォーム依存もなくなるため、プラグインのポータビリティも容易に実現できるようになります。
Rubランタイムへの依存がなくなる
RubyベースのVagrantでは、Vagrantとともにそののランタイムとしての特定のRubyランタイムが必要でした。GoベースになるVagrantでは、こうした特定のRubyランタイムへの依存がなくなるため、ユーザー自身で好みのRubyランタイムを利用することができるようになります。
今後、Vagrant 2.3ではGo言語で実装されたアルファ版のVagrantが含まれ、Vagrant 2.4でGo言語で実装されたVagrant本体がデフォルトになり、Vagrant 3.0でGo言語で実装されたVagrantだけがパッケージに含まれることで、Go言語版に完全に切り替わる予定だとされています。
41162:
2021-06-15 23:18有名漫画家がFGOの新規サーヴァントを担当したのに、納品後も全く担当キャラの実装が来ないので『実はボツを食らったけど菌糸類が気を使って俺に言えてないだけなのでは…???』と7章まで胃を痛めてた話が好きだよ。ケツァルコアトル。