gosoly

ゆっくりと趣味に浸る。

Windows Subsystem for Linux(WSL)でVagrantの環境を作る

DSCF1813

Macばりのシェル環境をWindowsに求めWSLを使い始めたのですが、Vagrantはホスト側にいれると、WSL側からの操作ができないため、WSLでVagrantを動かす備忘録です。

WSLのインストールについては以下の記事がわかりやすいです。

qiita.com

やったこと

VirtualBoxWindowsにインストールし、VagrantはWSLにインストールし利用します。

全部WSL内でも良い気もしますが、WSLを吹き飛ばしたりする可能性を考慮し個人的にこの関係が良い気がします。
※VagrantfileなどもWSL内ではなく、参照しやすいWindows側に配置しているかと思うので…

ちなみにWSL側からWindowsを参照はOKですが、逆の参照はNGなのでお気をつけください。

環境

  • Windows 10
  • Ubuntu 18.04 LTS
    • 16.04でも同様の設定のはずです

VirtualBoxのインストール

公式よりDLしインストール

Oracle VM VirtualBox

懸念点としてはVagrantのリリースバージョンよりも明らかに古いバージョンを入れるのが吉です。
Vagrant側で最新のVirtualBoxに対応できていない可能性があるため

Vagrantのインストール

aptからでもインストールできますが、若干バージョンが古かったので公式から落とすのが良さそうです。

公式よりDebian(64-bit)のパッケージを任意の場所にDL

Download - Vagrant by HashiCorp

WSLを立ち上げ、パッケージを配置した場所へ移動

cd /mnt/c/Users/<ユーザー名>/Desktop/<DLしてきたパッケージ>

インストール

sudo dpkg -i ./vagrant_*_x86_64.deb

PATHを編集

vi /home/<ユーザー名>/.bashrc

最下部あたりに以下を追記

PATH=$PATH:"/mnt/c/Program Files/Oracle/VirtualBox"
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"

また、WSLとWindows側でユーザー名が異なる場合は以下も追記

export VAGRANT_WSL_WINDOWS_ACCESS_USER=<Windowsのユーザー名>

Vagrantの実行

インストールも終わったし、そのまま動くと思いきやcmd.exeがない的なことを言われます。

おそらくPATHを通せばいける気がするのですが、コマンドプロンプトからWSLを動かせば回避できたので一旦それで

  1. コマンドプロンプトを起動(非管理者権限でおk)
  2. bashっと入力しEnter、これでWSL側にログインできます。
  3. この状態であれば任意の場所でvagrantを動かす。

以上でWSLからVagrantが動くようになります。

おわりに

Vagrant関係ないですが、WSLのおかげでGit for Windowsを入れずに、Gitをコマンドで使えるのがとてもありがたい…