[Vagrant & VirtualBox] Vagrant: 同じLAN内の端末から仮想マシンにアクセスする
例えばモバイルの開発で iPhone からアクセスしたり、同僚に見てもらうような場合に。
Vagrantfile の設定で config.vm.network :public_network
を利用して bridge します。
Contents
Vagrantfile
public_network
の設定を追加します。
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 を調べてから設定しました。
[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 が変わってくると思います。
bridge するインターフェースを指定する
利用している端末によって違いがあるので調べます。
(vagrant を動かしている端末)
% VBoxManage list bridgedifs |grep '^Name:'
Name: en1: Wi-Fi (AirPort)
Name: en0: Ethernet
Name: p2p0
これを指定しないと、下記のように vagrant up
時に毎回聞かれます。
==> 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 up
すればOK。
あとは指定したアドレス、ここでは 10.0.1.100 を開けばドキュメントルートが表示されます。
synced_folder もあわせてつかう
synced_folder もあわせて使おうとしたら、下記のエラーが出ました。
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 も作ってあげれば、問題なく使えました。
例えばこんな感じで。
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