https://www.vagrantup.com/downloads.html からインストラーをダウンロードしてインストールすれば普通に使える。が、今の環境では Docker Toolbox のインストールで一緒に入ってた。
ホスト側フォルダのマウント (vbguest)
ホスト(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"
SSH
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 を使う必要がある。
Hostonly Network
標準では NAT ネットワークで、ホスト側からアクセスするためにはいちいち port forwarding 設定が必要です。
Vagrantfile
にある次の行をアンコメントするとホストオンリーネットワークアダプタが作成され
# config.vm.network "private_network", ip: "192.168.33.10"
NAT 設定不要で ip:
で指定した IP アドレスにホスト側から直接アクセスできるようになります。
Bridge Network
セキュリティ的に問題ないとわかっている場合は Bridge Network を使えるようにすることで、他のホストからもアクセスできるようにできます。Vagrantfile
の次の行をアンコメントすると使えます。
# config.vm.network "public_network"
こちらは IP アドレスの指定が不要ですが、きっとホストPCのあるネットワークには DHCP サーバーがありますよね
Box の更新
==> default: Checking if box 'centos/7' is up to date...
==> default: A newer version of the box 'centos/7' for provider 'virtualbox' is
==> default: available! You currently have version '1804.02'. The latest is version
==> default: '1809.01'. Run `vagrant box update` to update.
$ vagrant box update
==> default: Checking for updates to 'centos/7'
default: Latest installed version: 1804.02
default: Version constraints:
default: Provider: virtualbox
==> default: Updating 'centos/7' with provider 'virtualbox' from version
==> default: '1804.02' to '1809.01'...
==> default: Loading metadata for box 'https://vagrantcloud.com/centos/7'
==> default: Adding box 'centos/7' (v1809.01) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1809.01/providers/virtualbox.box
default: Download redirected to host: cloud.centos.org
default:
==> default: Successfully added box 'centos/7' (v1809.01) for 'virtualbox'!
$ vagrant box list
centos/7 (virtualbox, 1804.02)
centos/7 (virtualbox, 1809.01)
ubuntu/xenial64 (virtualbox, 20180224.0.0)
古いものを消すには
$ vagrant box remove centos/7 --box-version 1804.02
などとする