Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Configuration private network with Vagrant

I'm configuring 3 virtual machines on my desktop with Vagrant. And I want to build cluster with these 3 VMs. And I want to configure the IP of these 3 machines in private network and access each VM in my desktop only. The reason of this configuration is I'll use these three VMs for development only.

So could you answer the questions how I shall configure the IP of VM with Vagrant for this purpose? I cannot understand how I configure IP address of private network.

like image 202
Jinho Yoo Avatar asked Sep 27 '22 12:09

Jinho Yoo


1 Answers

Create A Vagrant file with name Vagrantfile and add:

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

Vagrant.configure("2") do |config|
         config.vm.provider :libvirt do |libvirt|
         libvirt.driver = "kvm"
         libvirt.host = 'localhost'
         libvirt.uri = 'qemu:///system'
         end
#        
config.vm.define "test1" do |vm1|
         vm1.vm.box = "ubuntu/trusty64"
         vm1.vm.hostname="vm1.example.com"
          vm1.vm.provider :libvirt do |domain|
         domain.memory = 1024
         domain.cpus = 1
         end
        vm1.vm.network :private_network,
                        :ip => '192.168.1.10',
                        :libvirt__netmask => '255.255.255.0',
                        :libvirt__network_name => 'mynetwork',
                        :libvirt__forward_mode => 'none'

end

config.vm.define "test2" do |vm2|
         vm2.vm.box = "ubuntu/trusty64"
         vm2.vm.hostname="vm2.example.com"
         vm2.vm.provider :libvirt do |domain|
         domain.memory = 1024
         domain.cpus = 1
         end
         vm2.vm.network :private_network, :ip => '192.168.1.11', :libvirt__network_name => 'mynetwork'
end 
config.vm.define "test3" do |vm3|
         vm3.vm.box = "ubuntu/trusty64"
         vm3.vm.hostname="vm3.example.com"
          vm3.vm.provider :libvirt do |domain|
         domain.memory = 1024
         domain.cpus = 1
         end
         vm3.vm.network :private_network, :ip => '192.168.1.12', :libvirt__network_name => 'mynetwork'

end

end

According to your provider you can change. This is for libvirt provider. In first test1 block

vm1.vm.network :private_network,
                            :ip => '192.168.1.10',
                            :libvirt__netmask => '255.255.255.0',
                            :libvirt__network_name => 'mynetwork',
                            :libvirt__forward_mode => 'none' 

this will create a isolated private network 192.168.1.0/24 with name mynetwork. you can change it something else. In second test2 and third test3 simply using network mynetwork. if you don't give any network name then it will assign some other name so it will better add networkname for more understandable. use command to up:

vagrant up test1 
vagrant up test2
vagrant up test3

If you are using virtualbox then Vagrantfile will be like below but many syntax will be same.

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
like image 168
pl_rock Avatar answered Oct 18 '22 03:10

pl_rock