
세 개의 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