Windows で Vagrant

vagrant

https://www.vagrantup.com/downloads.html からインストラーをダウンロードしてインストールすれば普通に使える。

VirtualBox は Docker Toolbox のインストールで一緒に入ってた。

ホスト(Windows)側のフォルダを /vargant としてマウントさせるには vagrant-vbguest plugin を入れる必要がある。標準では vagrant up に rsync でコピーされるだけで稼働中はホスト側の変更が反映されない。

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching: vagrant-share-1.1.9.gem (100%)
Fetching: micromachine-2.0.0.gem (100%)
Fetching: vagrant-vbguest-0.15.0.gem (100%)
Installed the plugin 'vagrant-vbguest (0.15.0)'!
$ vagrant plugin list
vagrant-share (1.1.9, system)
vagrant-vbguest (0.15.0)

このプラグインを入れると vagrant up 時に VirtualBox Guest Additions のインストールが走り、必要なパッケージのインストールや kernel module のコンパイルが行われて遅くなるので不要であれば入れないほうが良いかも。既にインストール済みの場合でも "C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso" にあるバージョンと異なる場合は再インストールされます。各バージョンのファイルは http://download.virtualbox.org/virtualbox/ からダウンロード可能です。

vagrant vbguest --status で GuestAdditions のインストール状況が確認できる

インストールしただけではマウントはされず、次の行を Vagrantfile に追加する必要があります。

config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

Git for Windows についてくる git-bash.exe を Terminal として使うと vagrant ssh で接続できるけどプロンプトが表示されないという問題がある。しかし、ssh コマンドでは問題ない。これは大変不便なので ~/.bashrc

この vagrant ssh の問題はいつのまにか改善していました (2018/9/15 追記)

vssh() {
  if [ "$1" = "-r" ] ; then
    rm -f ssh_config
    shift
  fi
  test -f ssh_config || vagrant ssh-config | sed 's,C:,/c,' > ssh_config
  ssh -F ssh_config "$@"
}

と書いてみた。vagrant コマンドの実行はいちいち遅いので ssh_config の更新が不要な場合はすぐに ssh できて早いという利点もある。

最近の OpenSSH は .ssh/config ファイルを分割できるらしい
~/.ssh/configについて

vagrant ssh が機能するようになったため上記の vssh() は不要になったわけですが、IdentityFile の path として C:/Users/... と書かれていると git-bash についてくる OpenSSH ではアクセスできないため、/c/Users/... に置換するようにしました。C:\Windows\System32\OpenSSH\ssh.exe の方であれば C:/Users/... でもアクセスできました。ただし、こちらの ssh は winpty を使う必要がある。

コメント