Class: VagrantPlugins::GuestEsxi::Cap::ConfigureNetworks

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-esxi/cap/configure_networks.rb

Class Method Summary collapse

Class Method Details

.configure_networks(machine, networks) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/vagrant-esxi/cap/configure_networks.rb', line 5

def self.configure_networks(machine, networks)
  networks.each do |network|
    ix = network[:interface]
    switch = "vSwitch#{ix}"
    pg = "VagrantNetwork#{ix}"
    vmnic = "vmnic#{ix}"
    device = "vmk#{ix}"

    if machine.communicate.test("localcli network ip interface ipv4 get -i #{device}")
      machine.communicate.execute("localcli network ip interface remove -i #{device}")
    end

    if machine.communicate.test("localcli network vswitch standard list -v #{switch}")
      machine.communicate.execute("localcli network vswitch standard remove -v #{switch}")
    end

    machine.communicate.execute("localcli network vswitch standard add -v #{switch}")
    machine.communicate.execute("localcli network vswitch standard uplink add -v #{switch} -u #{vmnic}")
    machine.communicate.execute("localcli network vswitch standard portgroup add -v #{switch} -p #{pg}")
    machine.communicate.execute("localcli network ip interface add -i #{device} -p #{pg}")

    ifconfig = "localcli network ip interface ipv4 set -i #{device}"

    if network[:type].to_sym == :static
      machine.communicate.execute("#{ifconfig} -t static --ipv4 #{network[:ip]} --netmask #{network[:netmask]}")
    elsif network[:type].to_sym == :dhcp
      machine.communicate.execute("#{ifconfig} -t dhcp")
    end
  end
end