[Vagrant & VirtualBox] Vagrant: 同じLAN内の端末から仮想マシンにアクセスする

例えばモバイルの開発で iPhone からアクセスしたり、同僚に見てもらうような場合に。
[markdown]
Vagrantfile の設定で `config.vm.network :public_network` を利用して bridge します。
> * [Public Networks – Networking – Vagrant Documentation](http://docs.vagrantup.com/v2/networking/public_network.html)
## Vagrantfile
`public_network` の設定を追加します。
“`ruby:Vagrantfile
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = “chef/centos-6.5”
config.vm.provision :shell, :path => “provision.sh”
config.vm.network :public_network, ip: “10.0.1.100”, bridge: “en1: Wi-Fi (AirPort)”
end
“`
### IPを指定する
指定せずに一度 `vagrant up` – `vagrant ssh`
使える ip を調べてから設定しました。
“`prettyprinted
[vagrant@localhost ~]$ ifconfig | grep inet
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fece:83d/64 Scope:Link
inet addr:10.0.1.10 Bcast:10.0.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feb7:5b67/64 Scope:Link
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
“`
ネットワークや DHCP によって配られる ip が変わってくると思います。
> * [Vagrantでpublic_networkのIPアドレスを指定する方法 – cloverrose’s blog](http://cloverrose.hateblo.jp/entry/2013/09/13/212441)
### bridge するインターフェースを指定する
利用している端末によって違いがあるので調べます。
(vagrant を動かしている端末)
“`prettyprinted
% VBoxManage list bridgedifs |grep ‘^Name:’
Name: en1: Wi-Fi (AirPort)
Name: en0: Ethernet
Name: p2p0
“`
これを指定しないと、下記のように `vagrant up` 時に毎回聞かれます。
“`prettyprinted
==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) en0: Ethernet
3) p2p0
default: What interface should the network bridge to? 1
“`
> * [環境変数で Vagrant の bridge を指定できるようにする – Qiita](http://qiita.com/elim/items/816f03c732e4b274d181)
## つかいかた
いつも通り `vagrant up` すればOK。
あとは指定したアドレス、ここでは 10.0.1.100 を開けばドキュメントルートが表示されます。
## synced_folder もあわせてつかう
synced_folder もあわせて使おうとしたら、下記のエラーが出ました。
> * [Vagrant: synced_folder を nfs マウントする | deadwood](https://www.d-wood.com/blog/2014/06/12_6339.html)
“`prettyprinted
NFS requires a host-only network to be created.
Please add a host-only network to the machine (with either DHCP or a
static IP) for NFS to work.
“`
private_network も作ってあげれば、問題なく使えました。
例えばこんな感じで。
“`prettyprinted
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = “chef/centos-6.5”
config.vm.provision :shell, :path => “provision.sh”
config.vm.network :private_network, ip: “192.168.33.10”
config.vm.network :public_network, ip: “10.0.1.100”, bridge: “en1: Wi-Fi (AirPort)”
# synced_folder for Mac OS X
config.vm.synced_folder “../dist”, “/var/www/html/”, type: “nfs”
end
“`
> * [vagrantがbridge接続できなかった時の対処法 – Qiita](http://qiita.com/yu1ch1/items/423fc4bcddfe98d42813)
## 補遺
> * [Vagrant: LAN 内の他の端末から仮想マシンに SFTP 接続できちゃう | deadwood](https://www.d-wood.com/blog/2014/08/27_6678.html)
[/markdown]