Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

Commit

Permalink
Environment enhancements
Browse files Browse the repository at this point in the history
- Added partial support to virtualbox provider

Signed-off-by: Giuseppe Baccini <[email protected]>
  • Loading branch information
Giuseppe Baccini committed Jun 15, 2022
1 parent c236ba6 commit 696d38e
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 37 deletions.
101 changes: 65 additions & 36 deletions env/Vagrantfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
BOX_NAME = ENV["BOX_NAME"] || "opensuse/Leap-15.3.x86_64"
VM_PROVIDER = ENV["VM_PROVIDER"] || "libvirt"
VM_NET = (ENV["VM_NET"] || "10.46.201.0").split(".0")[0]
VM_NET_LAST_OCTET_START = Integer(ENV["VM_NET_LAST_OCTET_START"] || "101")
VM_BRIDGE_INET = ENV["VM_BRIDGE_INET"] || "eth0"

#k3s-ansible seems to work with only 1 admin; this should be investigated.
#For the time being, we assume this value hardcoded to 1.
Expand All @@ -16,6 +18,7 @@ WORKER_CPU = Integer(ENV["WORKER_CPU"] || "2")
WORKER_DISK = ((ENV["WORKER_DISK"] || "no") == "yes")
WORKER_DISK_SIZE = ENV["WORKER_DISK_SIZE"] || "8G"
STOP_AFTER_BOOTSTRAP = ((ENV["STOP_AFTER_BOOTSTRAP"] || "no") == "yes")
STOP_AFTER_K3S_INSTALL = ((ENV["STOP_AFTER_K3S_INSTALL"] || "no") == "yes")
S3GW_IMAGE = ENV["S3GW_IMAGE"] || "ghcr.io/aquarist-labs/s3gw:latest"
S3GW_IMAGE_PULL_POLICY = ENV["S3GW_IMAGE_PULL_POLICY"] || "Always"
PROV_USER = ENV["PROV_USER"] || "vagrant"
Expand Down Expand Up @@ -56,7 +59,13 @@ extra_vars = {
scenario: SCENARIO,
k3s_version: K3S_VERSION,
systemd_dir: "/etc/systemd/system",
master_ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START}"
master_ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START}",

# --node-ip is needed when using virtualbox, otherwise it will start k3s on the NAT interface.
# This is not sufficient when WORKER_COUNT > 0 because workers need this directive too.
# Currently seems that this problem cannot be overcome, so with virtualbox you can only have a
# working cluster with WORKER_COUNT == 0
extra_server_args: "--node-ip #{VM_NET}.#{VM_NET_LAST_OCTET_START}"
}

def ansible_provision (context, ansible_groups, extra_vars)
Expand All @@ -79,37 +88,39 @@ def ansible_provision (context, ansible_groups, extra_vars)
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/longhorn-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/s3gw-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/s3gw-ui-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/ingress-traefik-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
if SCENARIO != ""
if(!STOP_AFTER_K3S_INSTALL)
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/longhorn-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/s3gw-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/s3gw-ui-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/load-scen.yaml"
ansible.playbook = "playbooks/ingress-traefik-deploy.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
if SCENARIO != ""
context.vm.provision "ansible" do |ansible|
ansible.limit = "all"
ansible.playbook = "playbooks/load-scen.yaml"
ansible.groups = ansible_groups
ansible.extra_vars = extra_vars
end
end
end
end
end
Expand All @@ -124,16 +135,25 @@ Vagrant.configure("2") do |config|
ansible_groups["zypper"] << "worker-[1:#{WORKER_COUNT}]"
end

config.vm.provider "libvirt" do |lv|
lv.connect_via_ssh = false
lv.qemu_use_session = false
lv.nic_model_type = "e1000"
lv.cpu_mode = 'host-passthrough'
if VM_PROVIDER == "libvirt"
config.vm.provider "libvirt" do |lv|
lv.connect_via_ssh = false
lv.qemu_use_session = false
lv.nic_model_type = "e1000"
lv.cpu_mode = 'host-passthrough'
end

# This allows to have a working cluster with WORKER_COUNT > 0
# It removes --node-ip directive.
extra_vars[:extra_server_args] = ""

elsif VM_PROVIDER == "virtualbox"
config.vm.synced_folder "~", "/shared"
end

(1..ADMIN_COUNT).each do |i|
config.vm.define "admin-#{i}" do |admin|
admin.vm.provider "libvirt" do |lv|
admin.vm.provider VM_PROVIDER do |lv|
lv.memory = ADMIN_MEM
lv.cpus = ADMIN_CPU
if WORKER_COUNT == 0 && ADMIN_DISK
Expand All @@ -143,7 +163,12 @@ Vagrant.configure("2") do |config|

admin.vm.box = BOX_NAME
admin.vm.hostname = "admin-#{i}"
admin.vm.network "private_network", autostart: true, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i-1}"

if VM_PROVIDER == "libvirt"
admin.vm.network "private_network", autostart: true, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i-1}"
elsif VM_PROVIDER == "virtualbox"
admin.vm.network "public_network", bridge: VM_BRIDGE_INET, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i-1}"
end
end

if WORKER_COUNT == 0
Expand All @@ -154,7 +179,7 @@ Vagrant.configure("2") do |config|
if WORKER_COUNT > 0
(1..WORKER_COUNT).each do |i|
config.vm.define "worker-#{i}" do |worker|
worker.vm.provider "libvirt" do |lv|
worker.vm.provider VM_PROVIDER do |lv|
lv.memory = WORKER_MEM
lv.cpus = WORKER_CPU
if WORKER_DISK
Expand All @@ -164,7 +189,11 @@ Vagrant.configure("2") do |config|

worker.vm.box = BOX_NAME
worker.vm.hostname = "worker-#{i}"
worker.vm.network "private_network", autostart: true, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i+(ADMIN_COUNT-1)}"
if VM_PROVIDER == "libvirt"
worker.vm.network "private_network", autostart: true, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i+(ADMIN_COUNT-1)}"
elsif VM_PROVIDER == "virtualbox"
worker.vm.network "public_network", bridge: VM_BRIDGE_INET, ip: "#{VM_NET}.#{VM_NET_LAST_OCTET_START+i+(ADMIN_COUNT-1)}"
end

# Only execute once the Ansible provisioner,
# when all nodes are up and ready.
Expand Down
8 changes: 7 additions & 1 deletion env/setup-vm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
set -e

export BOX_NAME=${BOX_NAME:-"opensuse/Leap-15.3.x86_64"}
export VM_PROVIDER=${VM_PROVIDER:-"libvirt"}
export VM_NET=${VM_NET:-"10.46.201.0"}
export VM_NET_LAST_OCTET_START=${CLUSTER_NET_LAST_OCTET_START:-"101"}
export VM_BRIDGE_INET=${VM_BRIDGE_INET:-"eth0"}
export ADMIN_COUNT=${ADMIN_COUNT:-"1"}
export WORKER_COUNT=${WORKER_COUNT:-"1"}
export ADMIN_MEM=${ADMIN_MEM:-"4096"}
Expand All @@ -17,13 +19,14 @@ export WORKER_DISK=${WORKER_DISK:-"no"}
export WORKER_DISK_SIZE=${WORKER_DISK_SIZE:-"8G"}
export CONTAINER_ENGINE=${CONTAINER_ENGINE:-"podman"}
export STOP_AFTER_BOOTSTRAP=${STOP_AFTER_BOOTSTRAP:-"no"}
export STOP_AFTER_K3S_INSTALL=${STOP_AFTER_K3S_INSTALL:-"no"}
export S3GW_IMAGE=${S3GW_IMAGE:-"ghcr.io/aquarist-labs/s3gw:latest"}
export S3GW_IMAGE_PULL_POLICY=${S3GW_IMAGE_PULL_POLICY:-"Always"}
export PROV_USER=${PROV_USER:-"vagrant"}

#these defaults will change
export S3GW_UI_REPO=${S3GW_UI_REPO:-"https://github.com/aquarist-labs/aws-s3-explorer.git"}
export S3GW_UI_VERSION=${S3GW_UI_VERSION:-"s3gw-demo"}
export S3GW_UI_VERSION=${S3GW_UI_VERSION:-"s3gw-ui-testing"}

export SCENARIO=${SCENARIO:-"default"}
export K3S_VERSION=${K3S_VERSION:-"v1.23.6+k3s1"}
Expand All @@ -36,8 +39,10 @@ start_env() {

build_env() {
echo "BOX_NAME=${BOX_NAME}"
echo "VM_PROVIDER=${VM_PROVIDER}"
echo "VM_NET=${VM_NET}"
echo "VM_NET_LAST_OCTET_START=${VM_NET_LAST_OCTET_START}"
echo "VM_BRIDGE_INET=${VM_BRIDGE_INET}"
echo "ADMIN_COUNT=${ADMIN_COUNT}"
echo "WORKER_COUNT=${WORKER_COUNT}"
echo "ADMIN_MEM=${ADMIN_MEM}"
Expand All @@ -50,6 +55,7 @@ build_env() {
echo "WORKER_DISK_SIZE=${WORKER_DISK_SIZE}"
echo "CONTAINER_ENGINE=${CONTAINER_ENGINE}"
echo "STOP_AFTER_BOOTSTRAP=${STOP_AFTER_BOOTSTRAP}"
echo "STOP_AFTER_K3S_INSTALL=${STOP_AFTER_K3S_INSTALL}"
echo "S3GW_IMAGE=${S3GW_IMAGE}"
echo "S3GW_IMAGE_PULL_POLICY=${S3GW_IMAGE_PULL_POLICY}"
echo "PROV_USER=${PROV_USER}"
Expand Down

0 comments on commit 696d38e

Please sign in to comment.