Add lab-build snippets and executing them in 'create'. Refactor create/destroy/pristine; also, only virsh destroy VMs if they are 'running'

This commit is contained in:
Pim van Pelt
2023-05-06 12:41:01 +00:00
parent bd4c76689d
commit 72245529a2
17 changed files with 102 additions and 24 deletions

View File

@ -0,0 +1,6 @@
#!/bin/sh
echo " * Disabling VPP, Bird and FRR"
for i in vpp vppcfg bird-dataplane frr; do
ln -sf /dev/null /etc/systemd/system/multi-user.target.wants/${i}.service
done

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "Testing build snippets"
date

View File

@ -0,0 +1,6 @@
#!/bin/sh
echo " * Disabling VPP, Bird and FRR"
for i in vpp vppcfg bird-dataplane frr; do
ln -sf /dev/null /etc/systemd/system/multi-user.target.wants/${i}.service
done

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "Testing build snippets"
date

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,5 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

27
create
View File

@ -24,18 +24,17 @@ LABDIR=/var/lab
STAGING=$LABDIR/staging
HVN="hvn${LAB}.lab.ipng.ch"
echo "* Cloning base"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; mkdir -p $STAGING/\$VM; zfs clone $BASE ssd-vol0/\$VM; done"
sleep 1
VMS=$(ls -1 build/${BUILD}/${HVN}/)
echo "* Mounting in staging"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; mount /dev/zvol/ssd-vol0/\$VM-part1 $STAGING/\$VM; done"
echo "* Rsyncing build"
rsync -aIcgv build/$BUILD/$HVN/ root@hvn${LAB}.lab.ipng.ch:$STAGING
echo "* Setting permissions"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; chown -R root. $STAGING/\$VM/root; done"
echo "* Unmounting and snapshotting pristine state"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; umount $STAGING/\$VM; zfs snapshot ssd-vol0/\${VM}@pristine; done"
for VM in $VMS; do
echo "[$VM] Cloning base"
ssh root@$HVN "mkdir -p $STAGING/$VM; zfs clone $BASE ssd-vol0/$VM"
echo "[$VM] Mounting in staging"
ssh root@$HVN "mount /dev/zvol/ssd-vol0/$VM-part1 $STAGING/$VM"
echo "[$VM] Rsyncing build"
rsync -aIcg build/$BUILD/$HVN/$VM/ root@${HVN}:$STAGING/$VM/
echo "[$VM] Running lab-build snippets"
ssh root@$HVN "cd $STAGING/$VM; for s in root/lab-build/*; do chroot $STAGING/$VM /bin/bash /\$s; done"
echo "[$VM] Unmounting and snapshotting pristine state"
ssh root@$HVN "umount $STAGING/$VM; zfs snapshot ssd-vol0/${VM}@pristine"
done

12
destroy
View File

@ -10,13 +10,17 @@
## * Recursively delete any matching ZFS datasets
BASE=${BASE:=ssd-vol0/hvn0.chbtl0.ipng.ch/ssd-vol0/vpp-proto-disk0@20221018-release}
BUILD=${BUILD:=default}
LAB=${LAB:=0}
## Do not touch below this line
HVN="hvn${LAB}.lab.ipng.ch"
echo "* Destroying VMs"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; virsh destroy \$VM; done"
VMS=$(ls -1 build/${BUILD}/${HVN}/)
echo "* Destroying ZFS datasets"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; zfs destroy -r ssd-vol0/\$VM; done"
for VM in $VMS; do
echo "[$VM] Destroying VM"
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
echo "[$VM] Destroying ZFS datasets"
ssh root@$HVN "zfs destroy -r ssd-vol0/$VM"
done

View File

@ -0,0 +1,6 @@
#!/bin/bash
echo " * Fixing permissions"
chown -R root. /root/
chown -R ipng. /home/ipng/

View File

@ -0,0 +1,6 @@
#!/bin/sh
echo " * Disabling VPP, Bird and FRR"
for i in vpp vppcfg bird-dataplane frr; do
ln -sf /dev/null /etc/systemd/system/multi-user.target.wants/${i}.service
done

View File

@ -1,10 +1,14 @@
#!/bin/sh
BUILD=${BUILD:=default}
LAB=${LAB:=0}
## Do not touch below this line
HVN="hvn${LAB}.lab.ipng.ch"
VMS=$(ls -1 build/${BUILD}/${HVN}/)
## Destroy the VMs and bring them back into pristine state
echo "* Restarting VMs from pristine snapshot"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; virsh destroy \$VM; zfs rollback ssd-vol0/\${VM}@pristine; done"
for VM in $VMS; do
echo "[$VM] Destroying VM"
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
echo "[$VM] Rolling VM back to pristine snapshot"
ssh root@$HVN "zfs rollback ssd-vol0/${VM}@pristine"
done

View File

@ -13,8 +13,12 @@ CMD=$1
exit
}
echo "* Executing $CMD against all VMs on lab $LAB"
ssh root@$HVN "set -x; for node in 0 1 2 3; do VM=vpp${LAB}-\${node}; virsh $CMD \$VM; done"
VMS=$(ls -1 build/${BUILD}/${HVN}/)
for VM in $VMS; do
echo "[$VM] Executing $CMD against VMs on lab $LAB"
ssh root@$HVN "virsh $CMD $VM"
done
[ "$CMD" = "start" ] && {
echo "* Committing OVS config"