[Vagrant & VirtualBox] Vagrant: vagrant-hostsupdater で /etc/hosts を書き換える

vagrant-hostsupdater を利用すると、vagrant 実行時に /etc/hosts を書き換えてくれます。

インストール

% vagrant plugin install vagrant-hostsupdater

つかいかた

Vagrantfile に設定を加えます。

Vagrantfile
  #
  # Vagrant::Hostsupdater
  #
  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.hostname = "www.yahoo.com"
  config.hostsupdater.aliases = ["www.yahoo.co.jp", "www.sample.com"]

いつもどりに vagrant up

% vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
    :
==> default: Checking for host entries
==> default: adding to (/etc/hosts) : 192.168.33.10  www.yahoo.com  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574
==> default: adding to (/etc/hosts) : 192.168.33.10  www.yahoo.co.jp  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574
==> default: adding to (/etc/hosts) : 192.168.33.10  www.sample.com  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574
Password:
==> default: Setting hostname...
    :

/etc/hosts を確認してみる。

/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost
192.168.33.10  www.yahoo.com  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574
192.168.33.10  www.yahoo.co.jp  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574
192.168.33.10  www.sample.com  # VAGRANT: 357923c65f4312d443b6ee87f1885dbd (default) / f5f95a0d-a022-4d77-9239-9137fd229574

/etc/hosts を使ってドメインの名前解決をしてくれるので、この例では某ポータルサイトの URI をたたくと仮想マシンのドキュメントルートが表示されるようになります。

vagrant halt で終了すると、/etc/hosts も元に戻りました。

/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost

補遺