1
2
3
4
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
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# -*- 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
|