[25833] | 1 | #!/bin/bash |
---|
| 2 | |
---|
| 3 | # install debathena into a blank vm, and run tests confirming the install |
---|
| 4 | # |
---|
| 5 | # |
---|
| 6 | # This was developed and tested using VMWare Workstation 9, |
---|
| 7 | # and mkisofs(2.01)/genisoimage 1.1.11 |
---|
| 8 | # |
---|
| 9 | # example usage: |
---|
| 10 | # -s precise |
---|
| 11 | # -a i386 |
---|
| 12 | # -h <vmware host> |
---|
| 13 | # -i (this was tested using a static IP taken from vmnet8) |
---|
| 14 | # -p http://<your preseed> |
---|
| 15 | |
---|
| 16 | BASEDIR=. |
---|
| 17 | |
---|
| 18 | SUITE= |
---|
| 19 | ARCH= |
---|
| 20 | IP= |
---|
| 21 | HOSTNAME= |
---|
| 22 | PRESEED= |
---|
| 23 | |
---|
| 24 | LOGDIR=$BASEDIR/log |
---|
| 25 | NOW=$(date +"%d-%m-%y") |
---|
| 26 | LOG=$LOGDIR/"install-test-"$NOW".log" |
---|
| 27 | |
---|
| 28 | |
---|
| 29 | function usage() { |
---|
| 30 | cat<< EO |
---|
| 31 | Usage: -s <suite> -a <architecture> -h <hostname> -i <ip> -p <preseed> |
---|
| 32 | EO |
---|
| 33 | } |
---|
| 34 | |
---|
| 35 | |
---|
| 36 | while getopts "s:a:h:i:p:" OPTION |
---|
| 37 | |
---|
| 38 | do |
---|
| 39 | case $OPTION in |
---|
| 40 | s) |
---|
| 41 | SUITE=$OPTARG |
---|
| 42 | ;; |
---|
| 43 | a) |
---|
| 44 | ARCH=$OPTARG |
---|
| 45 | ;; |
---|
| 46 | h) |
---|
| 47 | HOSTNAME=$OPTARG |
---|
| 48 | ;; |
---|
| 49 | i) |
---|
| 50 | IP=$OPTARG |
---|
| 51 | ;; |
---|
| 52 | p) |
---|
| 53 | PRESEED=$OPTARG |
---|
| 54 | ;; |
---|
| 55 | ?) |
---|
| 56 | usage |
---|
| 57 | exit 1 |
---|
| 58 | ;; |
---|
| 59 | esac |
---|
| 60 | done |
---|
| 61 | |
---|
| 62 | if [[ -z $HOSTNAME || -z $ARCH || -z $PRESEED || -z $IP ]] ; then |
---|
| 63 | echo "Empty option. HOSTNAME: $HOSTNAME, ARCH: $ARCH, PRESEED: $PRESEED, IP: $IP" | tee -a $LOG |
---|
| 64 | usage |
---|
| 65 | exit 1 |
---|
| 66 | fi |
---|
| 67 | |
---|
| 68 | if [ -d tmp ] ; then |
---|
| 69 | rm -rf tmp |
---|
| 70 | fi |
---|
| 71 | |
---|
| 72 | mkdir $BASEDIR/tmp |
---|
| 73 | TMPDIR=$BASEDIR/tmp |
---|
| 74 | |
---|
| 75 | echo "creating build files..." | tee -a $LOG |
---|
| 76 | cp -R $BASEDIR/isolinux $TMPDIR |
---|
| 77 | |
---|
| 78 | echo "fetching kernel and initrd..." | tee -a $LOG |
---|
| 79 | wget -q http://mirrors.mit.edu/ubuntu/dists/$SUITE/main/installer-$ARCH/current/images/netboot/ubuntu-installer/$ARCH/linux -O $TMPDIR/linux |
---|
| 80 | wget -q http://mirrors.mit.edu/ubuntu/dists/$SUITE/main/installer-$ARCH/current/images/netboot/ubuntu-installer/$ARCH/initrd.gz -O $TMPDIR/initrd.gz |
---|
| 81 | |
---|
| 82 | ISOLINUXBIN=$TMPDIR/isolinux/isolinux.bin |
---|
| 83 | ISOLINUXBOOT=$TMPDIR/isolinux/boot.cat |
---|
| 84 | ISOLINUXCFG=$TMPDIR/isolinux/isolinux.cfg |
---|
| 85 | |
---|
| 86 | # sane? |
---|
| 87 | if [ ! -f $ISOLINUXBIN ] ; then |
---|
| 88 | echo "isolinux.bin not found at: $ISOLINUXBIN exiting..." | tee -a $LOG |
---|
| 89 | exit 1 |
---|
| 90 | fi |
---|
| 91 | |
---|
| 92 | if [ ! -f $ISOLINUXBOOT ] ; then |
---|
| 93 | echo "boot.cat not found at: $ISOLINUXBOOT exiting..." | tee -a $LOG |
---|
| 94 | exit 1 |
---|
| 95 | fi |
---|
| 96 | |
---|
| 97 | if [ ! -f $ISOLINUXCFG ] ; then |
---|
| 98 | echo "isolinux.cfg not found at: $ISOLINUXCFG exiting..." | tee -a $LOG |
---|
| 99 | exit 1 |
---|
| 100 | fi |
---|
| 101 | |
---|
| 102 | echo "seeding isolinux.cfg..." | tee -a $LOG |
---|
| 103 | |
---|
| 104 | sed -i "s|%HOSTNAME%|$HOSTNAME|g" $ISOLINUXCFG |
---|
| 105 | sed -i "s|%IP%|$IP|g" $ISOLINUXCFG |
---|
| 106 | sed -i "s|%PRESEED%|$PRESEED|g" $ISOLINUXCFG |
---|
| 107 | |
---|
| 108 | echo "creating iso image..." | tee -a $LOG |
---|
| 109 | |
---|
| 110 | IMAGENAME=$SUITE-$ARCH-netboot.iso |
---|
| 111 | BUILDDIR=$TMPDIR |
---|
| 112 | |
---|
| 113 | mkisofs -r -V "Debathena Boot" \ |
---|
| 114 | -cache-inodes \ |
---|
| 115 | -J -l -b isolinux/isolinux.bin \ |
---|
| 116 | -c isolinux/boot.cat -no-emul-boot \ |
---|
| 117 | -boot-load-size 4 -boot-info-table \ |
---|
| 118 | -o $IMAGENAME $BUILDDIR 2>&1 | tee -a $LOG |
---|
| 119 | |
---|
| 120 | if [ ! -f $BASEDIR/$IMAGENAME ] ; then |
---|
| 121 | echo "iso creation failed. exiting..." | tee -a $LOG |
---|
| 122 | else |
---|
| 123 | echo "iso creation success..." | tee -a $LOG |
---|
| 124 | fi |
---|
| 125 | |
---|
| 126 | echo "installing iso into VM image..." | tee -a $LOG |
---|
| 127 | |
---|
| 128 | VMWARE_CONFIG=$BASEDIR/vmware_config |
---|
| 129 | |
---|
| 130 | #make vmwware boot out virtual disk / iso |
---|
| 131 | mkdir $TMPDIR/vm |
---|
| 132 | cp -R $VMWARE_CONFIG/* $TMPDIR/vm |
---|
| 133 | mv $BASEDIR/$IMAGENAME $TMPDIR/vm |
---|
| 134 | |
---|
| 135 | sed -i "s|%ISO%|$IMAGENAME|g" $TMPDIR/vm/default.vmx |
---|
| 136 | |
---|
| 137 | vmrun start $TMPDIR/vm/default.vmx 2>&1 | tee -a $LOG |
---|
| 138 | |
---|
| 139 | echo "sleeping for 4 hours before launching tests..." | tee -a $LOG |
---|
| 140 | |
---|
| 141 | sleep 240m |
---|
| 142 | |
---|
| 143 | ATHINFO_VERSION=`athinfo $IP version` |
---|
| 144 | ATHINFO_VERSION_PASS=`$ATHINFO_VERSION | grep -c debathena-cluster` |
---|
| 145 | |
---|
| 146 | if [[ $ATHINFO_VERSION_PASS -ne 1 ]] ; then |
---|
| 147 | echo "athinfo version returned: $ATHINFO_VERSION. Test Failed." | tee -a $LOG |
---|
| 148 | else |
---|
| 149 | echo "Test Passed! athinfo version: $ATHINFO_VERSION" | tee -a $LOG |
---|
| 150 | fi |
---|
| 151 | |
---|
| 152 | echo "done." |
---|
| 153 | |
---|
| 154 | exit 0 |
---|