しがないインフラエンジニアLOG

インフラエンジニアとしての諸々

'Windows Subsystem for Linux' でVagrantを操作する方法

今回したこと

今回はWindows Subsystem for Linux(以下WSL) にVagrantをインストールして、 WSL上でVagrantファイルを操作できるようにしてみました。

以下のhashcorp社の公式手順に沿って実施したのですが、 特につまずいたこともなく導入はスムーズでしたので参考にしていただければと思います。

Vagrant and Windows Subsystem for Linux - Vagrant by HashiCorp

 

なぜやろうとおもったか

職場ではMacユーザーなのですが、家でばWindows10をつかってます。

今までプログラムの動作確認のためにAWSやサクラのVPSWinSCPなどでファイルを上げて動作確認をしていました。

ただいちいち更新のたびにLinuxにファイルを上げる必要がある(同期していたとしても)面倒なので、 Windows上のWSLを使用してVagrantでうまい具合に開発しようと思ったのが始まりです。

前提

・WSLがインストールされていること。

Windows Subsystem for Linuxをインストールしてみよう! - Qiita

VirtualBoxWindows上にインストールされていること。

https://qiita.com/ringo0321/items/afa176192d9b5edf923d

1. パッケージのダウンロード

以下のURLから最新版のDebianパッケージ(64bit)を一旦Winowsのデスクトップにダウンロードしましょう。 執筆時点では「vagrant_2.0.1_x86_64.deb」となっているので今回はこちらを利用します。 Download - Vagrant by HashiCorp

2.Vagrantインストール 

WSLを起動後に以下のコマンドでWSL上の/tmpディレクトリにファイルを移動します。

mv /mnt/c/Users/{ユーザー名}/Desktop/vagrant_2.0.1_x86_64.deb /tmp/.

移動したファイルをdpkgコマンドでインストールします。

cd /tmp
sudo dpkg -i vagrant_2.0.1_x86_64.deb

これでVagrantのインストールは完了です。

3.VirtualBoxの実行ファイルをPATHに加える。

このままだとVagrantからWindow側にインストールしている VirtualBoxの操作ができないので以下の操作でWSL側のPATHに加えます。 ついでにVagrantWindowsへのアクセス権の許可を与えます。

vi /home/{ユーザー名}/.bashrc
末尾に以下を追加

# VagrantのWindowsシステムへのアクセス許可
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"

# Vagrantのプロジェクトフォルダを指定します。
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/home/{ユーザー名}/vagrant/CentOS67"

# VirtualBoxのexeをPATHに追加
PATH=$PATH:"/mnt/c/Program Files/Oracle/VirtualBox"

bashrc反映のため、sourceコマンドもしくはWSLの再起動を実施してください。

今回は例として「/home/{ユーザー名}/vagrant/CentOS67」ディレクトリで CentOS6.7のVagrantBoxを立ち上げたいと思います。

Vagrant設定と起動

ここまでくればあとは普通にVagrantを起動させるだけです。

## ディレクトリ作成
mkdir -p /home/{ユーザー名}/vagrant/CentOS67

## ディレクトリ移動
cd /home/{ユーザー名}/vagrant/CentOS67

## VagrantBoxダウンロード(今回はbento/centos-6.7を使用)
vagrant box add bento/centos-6.7 https://atlas.hashicorp.com/bento/boxes/centos-6.7

## Vagrantfileの作成
vagrant init

## Vagrantfileの修正
vi Vagrantfile
以下の行のコメントアウトを外し修正を実施。
変更前:
# config.vm.box = "base"
変更後
config.vm.box = "bento/centos-6.7"

## Vagrantの起動
vagrant init
  • Boxのダウンロードに時間がかかるので注意してください。

Vagrant 接続

あとは以下のコマンドでVagrantsshログイン

vagrant ssh 

最後に

いかがでしたか?

Macだと特に苦戦することもないVagrant導入ですが、今回はWindows10のWSLで実践してみました。

今回の導入でWSLからWindowsのexeを起動できるところまで持っていった、マイクロソフトの技術者に対して単純に感心しました。

WEB系の開発だと大体Macかと思いますが、たまにはWindowsで遊んでみてはいかがでしょうか!