Virtualization Testing VTE

This is a HOWTO to kick off a discussion on using the virtualization branches in the VTE. This VTE is in the virt branch.

Preparation

Debian Packages

One of the things that is different about this VTE is that it depends on placement of a set of Cogs Debian packages from the outset. Unlike previous VTEs, you cannot simply install the old Cogs packages and then update with the new Cogs binaries or Debian packages as the data store formats are incompatible.

In order to run the virt VTE, you’ll need to build these packages ahead of time

  • rex
  • cog
  • driver
  • cmdr
  • canopy-client
  • canopy-server
  • foundryctl
  • foundryd

and tell the VTE where to find them like so. The paths at that link are my own, update them according to the way your organize your filesystem. All of the artifacts here should be build from their respective virt branches.

MergeTB CLI

When setting up the VTE, you will need to use the CLI from the virt branch the most recent build is available here.

Running

Provisioning

First initialize config.yml as follows

cp site/config-default.yml site/config.yml

Then update the template to look like this

infrapod: 
  moactl:  docker.io/mergetb/moactld:latest
  foundry: docker.io/rgoodfel/foundry:virt
  etcd:    docker.io/mergetb/etcd:latest
  nex:     docker.io/mergetb/nex:latest

Or build the foundry container from the virt branch and use your own container registry endpoint.

Then the regular

./run.sh

will work to get things started. I have only tested this branch with internal authentication, so you’ll need to do the song and dance to get that going.

User setup

# this will give you a 401 error, it's ok, carry on
source local-merge-setup.sh -i reg
# login to user.mergetb.net and create the reg user with the password endicott^2
mergetb login -a internal reg
source local-merge-setup.sh -i reg

Initialization

Next you’ll need to initialize merge as follows

#be sure to use your local MergeTB CLI
alias mergetb='<path-to>/mergetb --cert /tmp/portal-keygen/ca.pem'
mergetb new site spineleaf spineleaf.mergetb.test ~/src/gitlab.com/mergetb/facilities/example/spineleaf/cmd/spineleaf.pbuf 
mergetb cert site spineleaf /tmp/keygen/cmdr.pem
mergetb cert wg spineleaf spineleaf.mergetb.test:36000 site/keygen/wgd.pem
mergetb pubkey ~/.ssh/id_rsa.pub

Exocomp Testing

All exocomp testing takes place from an XDC. In the virt branches, XDCs are project scope. Start by launching an XDC

mergetb new xdc cargobay6

Make sure you have an SSH config like the following

Host *-reg
  Hostname %h
  ProxyJump reg@jumpc.mergetb.io:2202
  ServerAliveInterval 100
  ServerAliveCountMax 2
  ForwardAgent yes
  User reg

Next build the triforce test and copy both onto your XDC

go test -c
scp triforce.{py,test} cargobay6-reg:
triforce.py                100% 1701    93.9KB/s   00:00    
triforce.test              100%   21MB 139.4MB/s   00:00    

The triforce.py just happened to be 1701 bytes … did not try for that … it just happened

Next copy the admin keys you’ll need to run exocomp tests

scp /tmp/portal-keygen/merge-admin.pem cargobay6-reg:merge-admin.pem
scp /tmp/keygen/admin.pem cargobay6-reg:facility-admin.pem

Now you should be able to run the triforce test from your XDC.

ssh cargobay6-reg
reg@cargobay6:~$ ./triforce.test -test.v
=== RUN   TestTriforce
    cmdline.go:68: creating experiment triforce
    cmdline.go:124: pushing experiment triforce
    cmdline.go:154: realizing experiment triforce
    portal-admin.go:29: checking allocation table
    portal-admin.go:82: checking n3:p0.one.triforce.reg
    portal-admin.go:82: checking n4:v8.one.triforce.reg
    portal-admin.go:82: checking n7:p1.one.triforce.reg
    portal-admin.go:82: checking n0:p2.one.triforce.reg
    portal-admin.go:82: checking n1:v0.one.triforce.reg
    portal-admin.go:82: checking n1:v1.one.triforce.reg
    portal-admin.go:82: checking n1:v2.one.triforce.reg
    portal-admin.go:82: checking n1:v3.one.triforce.reg
    portal-admin.go:82: checking n2:v4.one.triforce.reg
    portal-admin.go:82: checking n2:v5.one.triforce.reg
    portal-admin.go:82: checking n2:v6.one.triforce.reg
    portal-admin.go:82: checking n2:v7.one.triforce.reg
    cmdline.go:212: materializing realization one.triforce
    cmdline.go:310: attaching one.triforce
    cmdline.go:364: pinging p0
    cmdline.go:364: pinging p1
    cmdline.go:364: pinging p2
    cmdline.go:364: pinging v0
    cmdline.go:364: pinging v1
    cmdline.go:364: pinging v2
    cmdline.go:364: pinging v3
    cmdline.go:364: pinging v4
    cmdline.go:364: pinging v5
    cmdline.go:364: pinging v6
    cmdline.go:364: pinging v7
    cmdline.go:364: pinging v8
    cmdline.go:341: detaching one.triforce
    cmdline.go:246: dematerializing one.triforce
    facility-admin.go:33: checking vms are gone
    triforce_test.go:70: freeing
    cmdline.go:189: freeing realization one.triforce
    portal-admin.go:54: checking for leaked allocations for one.triforce.reg
    cmdline.go:341: detaching one.triforce
    cmdline.go:246: dematerializing one.triforce
    cmdline.go:189: freeing realization one.triforce
    cmdline.go:100: deleting experiment triforce
--- PASS: TestTriforce (180.48s)
PASS

Congratulations, you have now joined the Merge 1.0 testing campaign.

/etc/hosts

2.3.4.10  api.mergetb.net
2.3.4.100 jumpc.mergetb.io xdc.mergetb.io mergetb.io
2.3.4.200 launch.mergetb.net
2.3.4.32  user.mergetb.net
2.3.4.30  login.mergetb.net
2.3.4.99  admin.mergetb.net