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:
@ -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
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Testing build snippets"
|
||||
date
|
@ -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
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Testing build snippets"
|
||||
date
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
27
create
27
create
@ -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
12
destroy
@ -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
|
||||
|
6
overlays/bird/common/root/lab-build/perms
Normal file
6
overlays/bird/common/root/lab-build/perms
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo " * Fixing permissions"
|
||||
chown -R root. /root/
|
||||
chown -R ipng. /home/ipng/
|
||||
|
6
overlays/bird/host/root/lab-build/disable-vpp
Normal file
6
overlays/bird/host/root/lab-build/disable-vpp
Normal 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
|
12
pristine
12
pristine
@ -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
|
||||
|
8
virshall
8
virshall
@ -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"
|
||||
|
Reference in New Issue
Block a user