# -*- mode: ruby -*- # vi: set ft=ruby : # Documentation: # - read VAGRANT.md # - need vagrant plugin install vagrant-vyos env_vars = File.readlines('.env').each_with_object({}) do |line, hash| next if line.strip.empty? || line.start_with?('#') key, value = line.strip.split('=', 2) hash[key.strip] = value.strip.gsub(/(^['"]|['"]$)/, '') end HTTPS_PORT = env_vars['VYDEVICE_HTTPS_PORT'] API_KEY = env_vars['VYDEVICE_APIKEY'] NETMASK = env_vars['VYDEVICE_NETMASK'] VYOS_VM_IP = env_vars['VYDEVICE_IP'] VYOS_VM_HOST_IP = env_vars['VYDEVICE_HOST_IP'] $script = <<-SHELL cfg=/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper $cfg begin $cfg set service https api debug $cfg set service https api keys id apikey key #{API_KEY} $cfg set service https listen-address $1 $cfg set service https port #{HTTPS_PORT} $cfg commit $cfg end SHELL Vagrant.configure("2") do |config| # Device VyOS config.vm.define "pyvyos_device" do |pyvyos| pyvyos.vm.box = "vyos/current" pyvyos.vm.hostname = "pyvyos-device" pyvyos.vm.network "private_network", ip: VYOS_VM_IP , netmask: NETMASK pyvyos.ssh.host = VYOS_VM_HOST_IP pyvyos.vm.network "forwarded_port", guest: 443, host: 8433, id: "https", auto_correct: true, protocol: "tcp", host_ip: VYOS_VM_HOST_IP pyvyos.vm.network "forwarded_port", guest: 22, host: 2022, id: "ssh", auto_correct: true, protocol: "tcp", host_ip: VYOS_VM_HOST_IP pyvyos.ssh.username = "vyos" pyvyos.ssh.password = "vyos" pyvyos.ssh.insert_key = false pyvyos.vm.provision "shell", inline: $script, args: [VYOS_VM_IP] end end