職場でVagrant(with VirtualBox)を使ってLinux 仮想マシンを構築する際、Vagrantfile のポートフォワーディング設定でハマったのでメモ。
環境
- ホストOS: Windows 7 Professional
- Vagrant: 1.9.3
- VirtualBox: 5.1.22
- vagrant box: Ubuntu 16.04 = ubuntu/xenial64, CentOS 6.8 = bento/centos-6.8 *01両方試しました
host_ip: ‘127.0.0.1’ を指定しないとvagrant up でコケる
まず、host_ip: 指定なしでforwarded_port 指定すると、vagrant up が通りません。
なんでや…。
# これはダメ config.vm.network "forwarded_port", guest: 80, host: 8080, id: 'HTTP'
で、host_ip: パラメータにローカルホストを示す’127.0.0.1′ を指定するとvagrant up が通る様になりました。
# これでvagrant up は通るように... config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: '127.0.0.1', id: 'HTTP'
host_ip: ‘127.0.0.1’ を指定すると外部から仮想マシンに接続できない
vagrant up が通る様になってめでたしx2 と思いきや。
外部からポートフォワーディングを通して仮想マシンに接続する事ができません。
つまりhttp://localhost:8080 なら接続できるのに、http://dns_name:8080 は通らない状態。
vagrant up 後、VirtualBox の設定でNAT のポートフォワーディングを開いてホストIP(127.0.0.1)を削除してしまえば良いのですが、それだとvagrant up やらreload やらする都度、ホストIP を消さねばなりません。
host_ip: ‘empty’ で解決
host_ip: ‘empty’ を指定してやることで問題解決しました。
まさかの英単語文字列指定。
# これでvagrant up を通るし、外部からの接続もOK! config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: 'empty', id: 'HTTP'
こんなん、ドキュメント見て「ひょっとして…」と思わんかったら気付かんですよ。
もうちょっと直截な表記しておこうや。
脚注
↩01 | 両方試しました |
---|