Newer
Older
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
# encoding: utf-8
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Box / OS
VERSION_CODENAME = 'jammy'
ARCHITECTURE = '64'
VAGRANT_BOX = 'ubuntu/' + VERSION_CODENAME + ARCHITECTURE
# Memorable name for your
VM_NAME = 'gosdn-vm'
# VM User — 'vagrant' by default
VM_USER = 'vagrant'
Vagrant.configure(2) do |config|
# Vagrant box from Hashicorp
config.vm.box = VAGRANT_BOX
# Actual machine name
config.vm.hostname = VM_NAME
# Set VM name in Virtualbox
config.vm.provider "virtualbox" do |v|
v.name = VM_NAME
v.memory = 4096
end
#DHCP — comment this out if planning on using NAT instead
config.vm.network "private_network", type: "dhcp"
# Install git, go, docker, containerlab and download repositories
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get upgrade -y
apt-get install -y \
ca-certificates \
curl \
git \
gnupg \
make \
zip
apt-get autoremove -y
####### installing go #######
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
rm go1.21.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> /home/vagrant/.profile
echo 'export GOPATH=$HOME/go' >> /home/vagrant/.profile
source /home/vagrant/.profile
####### installing docker #######
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
usermod -aG docker vagrant
####### installing containerlab #######
bash -c "$(curl -sL https://get.containerlab.dev)"
####### get gosdn repository #######
su - vagrant -c "git clone https://code.fbi.h-da.de/danet/gosdn.git"
cd gosdn
su - vagrant -c "git submodule update --init --recursive"
su - vagrant -c "cd gosdn && make build"
####### get gnmi target repository #######
cd ..
su - vagrant -c "git clone --branch develop https://code.fbi.h-da.de/danet/gnmi-target.git"
su - vagrant -c "cd gnmi-target && docker build -f target.Dockerfile ."
su - vagrant -c "cd gnmi-target && make container"
SHELL