-
Notifications
You must be signed in to change notification settings - Fork 36
/
Vagrantfile
96 lines (83 loc) · 2.71 KB
/
Vagrantfile
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Copyright The flintlock Authors
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2004"
config.ssh.forward_agent = true
config.vm.synced_folder "./", "/home/vagrant/flintlock"
config.vm.network "forwarded_port", guest: 9090, host: 9090
config.vm.network "public_network"
cpus = 2
memory = 8192
config.vm.provider :virtualbox do |v|
# Enable nested virtualisation in VBox
v.customize ["modifyvm", :id, "--nested-hw-virt", "on"]
v.cpus = cpus
v.memory = memory
end
config.vm.provider :libvirt do |v, override|
# If you want to use a different storage pool.
# v.storage_pool_name = "vagrant"
v.cpus = cpus
v.memory = memory
override.vm.synced_folder "./", "/home/vagrant/flintlock", type: "nfs"
end
config.vm.provision "upgrade-packages", type: "shell", run: "once" do |sh|
sh.inline = <<~SHELL
#!/usr/bin/env bash
set -eux -o pipefail
apt update && apt upgrade -y
SHELL
end
config.vm.provision "install-basic-packages", type: "shell", run: "once" do |sh|
sh.inline = <<~SHELL
#!/usr/bin/env bash
set -eux -o pipefail
apt install -y \
make \
git \
gcc \
curl \
unzip
SHELL
end
config.vm.provision "install-golang", type: "shell", run: "once" do |sh|
sh.env = {
'GO_VERSION': ENV['GO_VERSION'] || "1.17.2",
}
sh.inline = <<~SHELL
#!/usr/bin/env bash
set -eux -o pipefail
curl -fsSL "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" | tar Cxz /usr/local
cat >> /etc/environment <<EOF
PATH=/usr/local/go/bin:$PATH
EOF
source /etc/environment
cat >> /etc/profile.d/sh.local <<EOF
GOPATH=\\$HOME/go
PATH=\\$GOPATH/bin:\\$PATH
export GOPATH PATH
EOF
source /etc/profile.d/sh.local
SHELL
end
config.vm.provision "install-kvm", type: "shell", run: "once" do |sh|
sh.inline = <<~SHELL
#!/usr/bin/env bash
set -eux -o pipefail
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
adduser 'vagrant' libvirt
adduser 'vagrant' kvm
setfacl -m u:${USER}:rw /dev/kvm
SHELL
end
end