2013-12-19 8 views
21

私はVagrantで複数のVMを管理しています。ネットワークはプライベートとして設定され、IPアドレスが設定され、ホスト名が割り当てられます。以下のVagrantファイルに示されているとおり。複数のVagrant VMがVMホスト名で通信できますか?

VMはIPアドレスを使用して互いに通信できますが、VMが割り当てられたホスト名を使用して通信できるようにする方法を知りたいと思います。私。 ping comtest2の作業をcomtest1からどうやって行うのですか?

Vagrantfile:

Vagrant.configure("2") do |config| 

    config.vm.define "comtest1" do |comtest1| 
    comtest1.vm.box = "precise32" 
    comtest1.vm.hostname = "comtest1" 
    comtest1.vm.network "private_network", ip: "192.168.10.21" 
    end 

    config.vm.define "comtest2" do |comtest2| 
    comtest2.vm.box = "precise32" 
    comtest2.vm.hostname = "comtest2" 
    comtest2.vm.network "private_network", ip: "192.168.10.22" 
    end 

end 

答えて

13
+0

非常に便利な、ありがとう。 – Nick

+3

プラグインと「不正行為」を使用する代わりに、より合法的な方法はありませんか? この制限がVMプロバイダまたはVagrantから来るのかどうか疑問です。 – vervas

9

Zeroconfを使用できます。これは、ネットワーク内のホスト名をブロードキャストし、ローカルネットワーク上の他のホストが使用できるようにします。あなたはtest1.local、test2.localなどを使ってホストにアクセスできます。

avahi-daemonlibnss-mdnsをインストールするだけです!

+1

これはうまくいくと思われ、通信する最も簡単な方法のように見えます。 – Jalpesh

0

チェックアウトlandrush on Github 迷惑メールのプライベートネットワークにDNSを設定します。

+1

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参照のためのリンクを提供することが望ましいです(// meta.stackoverflow.com/q/8259)。 – Tunaki

+0

これはLinuxホストでのみ動作するようです。 'iptables'の前提条件があるようです。 – Dennis

2

それは、世界で最もエレガントなソリューションではありませんが、それはどのようなものについては、非常に簡単です:

Vagrant.configure("2") do |config| 

    config.vm.define "comtest1" do |comtest1| 
    comtest1.vm.box = "precise32" 
    comtest1.vm.hostname = "comtest1" 
    comtest1.vm.network "private_network", ip: "192.168.10.21" 
    comtest1.vm.provision "shell", inline: <<-SHELL 
     sed -i '$ a 192.168.10.22 comtest2' /etc/hosts   
    SHELL 
    end 

    config.vm.define "comtest2" do |comtest2| 
    comtest2.vm.box = "precise32" 
    comtest2.vm.hostname = "comtest2" 
    comtest2.vm.network "private_network", ip: "192.168.10.22" 
    end 

end 
関連する問題