Skip to content

Commit

Permalink
Support different variants easier
Browse files Browse the repository at this point in the history
Basically lets you do `./runvm.sh foo` and it'll use group_vars/foo
instead of group_vars/all. This lets you easily customize versions of
the image for different sites/contests.
  • Loading branch information
ubergeek42 committed Apr 3, 2023
1 parent ab694c7 commit 53b1ee9
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
15 changes: 14 additions & 1 deletion build-final.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
#!/bin/bash
set -xeuo pipefail

# Default group for the VM in ansible. This lets you use group_vars/$VARIANT for site specific configuration
VARIANT=${1:-all}

SSHPORT=2222
SSH_BUILD_KEY="configs/imageadmin-ssh_key"
Expand All @@ -7,6 +11,10 @@ PIDFILE="tmp/qemu.pid"
ALIVE=0

IMGFILE="output/$(date +%Y-%m-%d)_image-amd64.img"
if [[ $IMGFILE != 'all' ]]; then
IMGFILE="output/$VARIANT-$(date +%Y-%m-%d)_image-amd64.img"
fi

BASEIMG="base-amd64.img"

# Copy to a raw disk image
Expand Down Expand Up @@ -63,7 +71,12 @@ waitforssh

echo "Running ansible"
INVENTORY_FILE=$(mktemp)
echo "vm ansible_port=$SSHPORT ansible_host=127.0.0.1" > $INVENTORY_FILE
cat <<EOF > $INVENTORY_FILE
vm ansible_port=$SSHPORT ansible_host=127.0.0.1
[$VARIANT]
vm
EOF

ANSIBLE_HOST_KEY_CHECKING=False time ansible-playbook -i $INVENTORY_FILE --ssh-extra-args="-o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --diff --become -u imageadmin --private-key $SSH_BUILD_KEY main.yml
rm -f $INVENTORY_FILE

Expand Down
12 changes: 10 additions & 2 deletions runvm.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/bin/bash

# Default group for the VM in ansible. This lets you use group_vars/$VARIANT for site specific configuration
VARIANT=${1:-all}

SSHPORT=2222
SSHKEY="$PWD/configs/imageadmin-ssh_key"
PIDFILE="tmp/qemu.pid"
Expand All @@ -16,7 +19,8 @@ function ctrl_c() {


function runssh() {
ssh -i $SSHKEY -o BatchMode=yes -o ConnectTimeout=1 -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null imageadmin@localhost -p$SSHPORT "$@" 2>/dev/null
chmod 0400 "$SSHKEY"
ssh -i "$SSHKEY" -o BatchMode=yes -o ConnectTimeout=1 -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null imageadmin@localhost -p$SSHPORT "$@" 2>/dev/null
}

function cleanup() {
Expand Down Expand Up @@ -61,7 +65,11 @@ function runansible() {
echo "Running ansible"
echo "Started at $(date)"
INVENTORY_FILE=$(mktemp)
echo "vm ansible_port=$SSHPORT ansible_host=127.0.0.1" > $INVENTORY_FILE
cat <<EOF > $INVENTORY_FILE
vm ansible_port=$SSHPORT ansible_host=127.0.0.1
[$VARIANT]
vm
EOF
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i $INVENTORY_FILE --diff --become -u imageadmin --private-key $SSHKEY --ssh-extra-args="-o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" main.yml
rm -f $INVENTORY_FILE
echo "Ansible finished at $(date)"
Expand Down
7 changes: 5 additions & 2 deletions test_final.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
#!/bin/bash

VARIANT=${1:-""}

SSHPORT=2222
SSH_ICPCADMIN_KEY="files/secrets/icpcadmin@contestmanager"
PIDFILE="tmp/qemu.pid"
SNAPSHOT="-snapshot"
ALIVE=0

BASEIMG="*_image-amd64.img"
BASEIMG=$(ls -tr output/$VARIANT*image-amd64.img | tail -n1)
echo "Booting $BASEIMG"

function launchssh() {
echo "Launching ssh session"
Expand All @@ -19,7 +22,7 @@ function cleanup() {
}

set -x
qemu-system-x86_64 -smp 1 -m 1024 -hda output/$BASEIMG -global isa-fdc.driveA= --enable-kvm -net user,hostfwd=tcp::$SSHPORT-:22 -net nic --daemonize --pidfile $PIDFILE $SNAPSHOT -vnc :0 -vga qxl -spice port=5901,disable-ticketing -usbdevice tablet
qemu-system-x86_64 -smp 2 -m 4096 -hda $BASEIMG -global isa-fdc.driveA= --enable-kvm -net user,hostfwd=tcp::$SSHPORT-:22 -net nic --daemonize --pidfile $PIDFILE $SNAPSHOT -vnc :0 -vga qxl -spice port=5901,disable-ticketing -usbdevice tablet
set +x

CMD=1
Expand Down

0 comments on commit 53b1ee9

Please sign in to comment.