the-packet-thrower icon

Vagrantfile

the-packet-thrower | PRO | 09/02/21 06:46:01 AM UTC | 0 ⭐ | 8407 👁️ | Never ⏰ | []
Ruby |

4.63 KB

|

None

|

0 👍

/

0 👎

# Vagrantfile API/syntax version.
VAGRANTFILE_API_VERSION = "2"
 
Vagrant.configure("#{VAGRANTFILE_API_VERSION}") do |config|
  config.vm.box = "vyos/current"
 
  # Disble SSH Replacement
  config.ssh.insert_key = false
 
  # Disable Plugin Updates
  if Vagrant.has_plugin?("vagrant-vbguest")
    config.vbguest.auto_update = false
  end
 
  # Configure Shared Folder
  config.vm.synced_folder ".", "/vagrant", disabled: true
 
  # VBOX
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 1
  end
 
  # Spine Routers
  $spine01_script = <<-SCRIPT
cat << EOF > /tmp/provision-template.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
set system host-name spine01
set system domain-name the-packet-thrower.com
set interface loopback lo address 192.168.255.1/32
set interface ethernet eth1 address 10.1.11.254/24
set interface ethernet eth2 address 10.1.12.254/24
set interface ethernet eth3 address 10.1.13.254/24
set protocols ospf area 0 network 0.0.0.0/0
commit
EOF
SCRIPT
 
  $spine02_script = <<-SCRIPT
cat << EOF > /tmp/provision-template.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
set system host-name spine02
set system domain-name the-packet-thrower.com
set interface loopback lo address 192.168.255.2/32
set interface ethernet eth1 address 10.2.11.254/24
set interface ethernet eth2 address 10.2.12.254/24
set interface ethernet eth3 address 10.2.13.254/24
set protocols ospf area 0 network 0.0.0.0/0
commit
EOF
SCRIPT
 
  # Leaf Routers
  $leaf01_script = <<-SCRIPT
cat << EOF > /tmp/provision-template.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
set system host-name leaf01
set system domain-name the-packet-thrower.com
set interface loopback lo address 192.168.255.11/32
set interface ethernet eth1 address 10.1.11.1/24
set interface ethernet eth2 address 10.2.11.254/24
set protocols ospf area 0 network 0.0.0.0/0
commit
EOF
SCRIPT
 
  $leaf02_script = <<-SCRIPT
cat << EOF > /tmp/provision-template.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
set system host-name leaf02
set system domain-name the-packet-thrower.com
set interface loopback lo address 192.168.255.12/32
set interface ethernet eth1 address 10.1.12.1/24
set interface ethernet eth2 address 10.2.12.254/24
set protocols ospf area 0 network 0.0.0.0/0
commit
EOF
SCRIPT
 
  $leaf03_script = <<-SCRIPT
cat << EOF > /tmp/provision-template.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
set system host-name leaf03
set system domain-name the-packet-thrower.com
set interface loopback lo address 192.168.255.13/32
set interface ethernet eth1 address 10.1.13.1/24
set interface ethernet eth2 address 10.2.13.254/24
set protocols ospf area 0 network 0.0.0.0/0
commit
EOF
  SCRIPT
 
  (1..2).each do |i|
    config.vm.define "SPINE0#{i}" do |spine|
      spine.vm.network "private_network", auto_config: false, virtualbox__intnet: "spine0#{i}_to_leaf01"
      spine.vm.network "private_network", auto_config: false, virtualbox__intnet: "spine0#{i}_to_leaf02"
      spine.vm.network "private_network", auto_config: false, virtualbox__intnet: "spine0#{i}_to_leaf03"
      spine.vm.provider :virtualbox do |vb|
        vb.customize ['modifyvm',:id,'--nicpromisc2','allow-all']
        vb.customize ['modifyvm',:id,'--nicpromisc3','allow-all']
        vb.customize ['modifyvm',:id,'--nicpromisc4','allow-all']
      end
      if i === 1
        spine.vm.provision "shell", inline: $spine01_script
      end
      if i === 2
        spine.vm.provision "shell", inline: $spine02_script
      end
      spine.vm.provision "shell", inline: <<-EOC
chmod 777 /tmp/provision-template.sh
sg vyattacfg -c /tmp/provision-template.sh
EOC
    end
  end
  # Leaf Routers
  (1..3).each do |i|
    config.vm.define "LEAF0#{i}" do |leaf|
      leaf.vm.network "private_network", auto_config: false, virtualbox__intnet: "spine01_to_leaf0#{i}"
      leaf.vm.network "private_network", auto_config: false, virtualbox__intnet: "spine02_to_leaf0#{i}"
      leaf.vm.provider :virtualbox do |vb|
        vb.customize ['modifyvm',:id,'--nicpromisc2','allow-all']
        vb.customize ['modifyvm',:id,'--nicpromisc3','allow-all']
      end
      if i === 1
        leaf.vm.provision "shell", inline: $leaf01_script
      end
      if i === 2
        leaf.vm.provision "shell", inline: $leaf02_script
      end
      if i === 3
        leaf.vm.provision "shell", inline: $leaf03_script
      end
      leaf.vm.provision "shell", inline: <<-EOC
chmod 777 /tmp/provision-template.sh
sg vyattacfg -c /tmp/provision-template.sh
      EOC
    end
  end
end

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎