Vagrantにおいて表題の通り。前回のエントリで、Vagrantfileで複数VMを起動するようにしたのだが、それぞれのVMにhostnameを設定したい。かつその名前でお互いがアクセスできれば一番良い。
■ 環境
- Vagrant 1.7.4
■ VMが1台の場合
VagrantfileでVMが1つである場合、下記のようにhostnameは設定できるはず。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "chef/centos-6.6"
config.vm.hostname = "zoo1"
end
`vagrant up`時のログには下記のように出ているはずである。
$ vagrant up
:
==> default: Setting hostname...
:
$
パッと確認したところ、下記が設定される。
$ vagrant ssh
[vagrant@zoo1 ~]$ hostname
zoo1
[vagrant@zoo1 ~]$ cat /etc/hosts
127.0.0.1 zoo1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[vagrant@zoo1 ~]$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zoo1
RES_OPTIONS="single-request-reopen"
[vagrant@zoo1 ~]$
これを複数VMにした場合にはどう設定すれば良いのだろう。
■ 複数VM
下記のように設定したものの、Vagrantfileの不備となり各種コマンドは正常に動作してくれない。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "chef/centos-6.6"
config.vm.define "zoo1" do |zoo|
zoo.hostname = "zoo1"
end
config.vm.define "zoo2" do |zoo|
zoo.hostname = "zoo2"
end
end
どうやら設定の仕方が間違っている様子。下記のように設定しなおしてみた。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "chef/centos-6.6"
config.vm.define "zoo1" do |node|
node.vm.hostname = "zoo1"
end
config.vm.define "zoo2" do |node|
node.vm.hostname = "zoo2"
end
end
OKであった。
$ vagrant ssh zoo1
[vagrant@zoo1 ~]$ hostname
zoo1
[vagrant@zoo1 ~]$ logout
Connection to 127.0.0.1 closed.
$
$ vagrant ssh zoo2
[vagrant@zoo2 ~]$ hostname
zoo2
[vagrant@zoo2 ~]$
[vagrant@zoo2 ~]$ cat /etc/hosts
127.0.0.1 zoo2 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[vagrant@zoo2 ~]$
[vagrant@zoo2 ~]$ ping zoo1
ping: unknown host zoo1
[vagrant@zoo2 ~]$
[vagrant@zoo2 ~]$ logout
Connection to 127.0.0.1 closed.
$
このように設定すればそれぞれhostnameは設定可能であることがわかる。ただし、お互いに名前でアクセスできるわけではない。
IPを固定で設定してしまえばアクセスは可能となるが、できれば固定IPというのは避けたい。次はプラグインでそれらを解決するものがありそうなので試してみることにする。
以上。