Vagrant Private Network IP는 작동하지 않지만 DHCP는 작동합니다.

Vagrant Private Network IP는 작동하지 않지만 DHCP는 작동합니다.

세 개의 VM이 구성된 방랑 구성 파일이 있습니다. 고정 IP가 있고 나머지 두 개는 DHCP에 있다는 점을 제외하면 모두 동일합니다. DHCP로 IP를 할당 받은 두 곳은 문제없이 서로 통신이 가능하지만, 고정 IP를 가진 두 곳은 서로 연락이 되지 않습니다.

즉, ping client0-> client1작동합니다.

client1-> client0작동

client1-> server그렇지 않다

이것은 내 Vagrantfile입니다.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "provision/cookbooks"
    chef.add_recipe "apt"
    chef.add_recipe "python"
  end

  config.vm.provision :shell, :path => "provision/python-modules.py"

  config.vm.define :server do |server|
    server.vm.hostname = "server"
    server.vm.network :private_network, ip: "172.28.128.2"
  end

  config.vm.define :client0 do |client0|
    client0.vm.hostname = "client0"
    client0.vm.network :private_network, type: :dhcp
  end

  config.vm.define :client1 do |client1|
    client1.vm.hostname = "client1"
    client1.vm.network :private_network, type: :dhcp
  end
end

server고정 IP를 통해 다른 사람이 컴퓨터에 접속할 수 있도록 하는 방법에 대한 아이디어가 있습니까 ? 저는 virtualbox 공급자를 사용하고 있습니다.

답변1

광범위한 연구와 실험 끝에 Vagrant가 각 VM을 다른 하위 마스크에 할당하여 서로 연결할 수 없는 것으로 나타났습니다. 실제로 그들은 모두 다른 네트워크에 있었습니다.

그러나 이를 무시할 수 있다는 것이 밝혀졌습니다. 이렇게 하려면 아래와 같이 넷마스크를 구성하면 됩니다.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "provision/cookbooks"
    chef.add_recipe "apt"
    chef.add_recipe "python"
  end

  config.vm.provision :shell, :path => "provision/python-modules.py"

  config.vm.define :server do |server|
    server.vm.hostname = "server"
    server.vm.network :private_network, ip: "172.28.128.2", :netmask => "255.255.0.0"
  end

  config.vm.define :client0 do |client0|
    client0.vm.hostname = "client0"
    client0.vm.network :private_network, type: :dhcp, :netmask => "255.255.0.0"
  end

  config.vm.define :client1 do |client1|
    client1.vm.hostname = "client1"
    client1.vm.network :private_network, type: :dhcp, :netmask => "255.255.0.0"
  end
end

현재로서는 DHCP를 사용하여 일부 VM을 유지하고 고정 IP를 사용하여 다른 VM을 유지하면서 전역 구성에서 모두 넷마스크를 재정의할 수 있는지 여부가 확실하지 않습니다. 더 강력한 시스템으로 돌아가면 이를 실험해 볼 것이므로 매번 VM을 파괴하고 생성하는 것이 더 빠릅니다.

답변2

DHCP를 사용하여 여러 VM을 프로비저닝하는 경우 아래와 같은 작업을 수행할 수도 있습니다. 선택적 VM 섹션에서는 필요한 여러 VM을 언급하거나 이름을 지정할 수 있습니다.

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = '2'

DOMAIN = '.example.com'
PUPPETMASTER_HOSTNAME = 'puppet' + DOMAIN

#Requires box with puppetlabs repo setup, but puppet not installed
DEFAULT_BOX = 'precise64'
DEFAULT_BOX_URL = 'http://files.vagrantup.com/precise64.box'

REQUIRED_HOSTS = [
  'puppetdb',
  'puppetdb-postgres'
]

OPTIONAL_HOSTS = [
  'ldap01',
  'ldap02'

]

HOSTS = REQUIRED_HOSTS + OPTIONAL_HOSTS

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  #VBox config to avoid mac address collisions
  config.vm.provider :virtualbox do |vb|
    vb.customize ['modifyvm', :id, '--natnet1', '10.200/16']
    #vb.gui = true
  end

  config.vm.box = DEFAULT_BOX
  config.vm.box_url = DEFAULT_BOX_URL

  #Add network interface
  config.vm.network :private_network, :type => :dhcp, :netmask => '255.255.0.0'

  #Defines puppet master
  config.vm.define :puppet_master do |puppetmaster|
    puppetmaster.vm.hostname = PUPPETMASTER_HOSTNAME
    puppetmaster.vm.synced_folder '../puppet/', '/vagrant_sync/puppet', :create => true
    puppetmaster.vm.provision :shell, :path => 'scripts/bootstrap_puppetmaster.sh'
  end

  HOSTS.each do |host_name, opts|
    config.vm.define host_name do |box|
      fqdn = host_name + DOMAIN

      box.vm.hostname = fqdn
      box.vm.provision :shell, :inline => 'yum install -y puppet'
      box.vm.provision :puppet_server do |puppet|
        puppet.puppet_server = PUPPETMASTER_HOSTNAME
      end
    end
  end
end

관련 정보