X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=ee4bd32dbc6b63d6ecc192d19a92a1d8d1346bb1;hb=d7f858a139c1b935b65e38a2d2b364a578b0a26f;hp=9fe81cda495999b181b6685d4ea1a959a9ab0704;hpb=7558599465b80202c5857a7569936084c3d40135;p=bootmanager.git diff --git a/build.sh b/build.sh index 9fe81cd..ee4bd32 100755 --- a/build.sh +++ b/build.sh @@ -1,45 +1,76 @@ #!/bin/bash # -# Builds bootmanager.sh[.sgn], the PlanetLab Boot Manager script, and -# PlanetLab-Bootstrap.tar.bz2, the initial root filesystem of a new -# PlanetLab node. For backward compatibility with old version 2.0 Boot -# CDs, additional utilities are also built and packaged as -# alpina-BootLVM.tar.gz and alpina-PartDisks.tar.gz. +# Builds bootmanager.sh[.sgn], which is the PlanetLab Boot Manager script. # # The bootmanager.sh script contains in it a uuencoded tarball of the # Boot Manager, customized for this PLC installation. # # Aaron Klingaman # Mark Huang -# Copyright (C) 2004-2006 The Trustees of Princeton University -# -# $Id: build.sh,v 1.5 2006/04/03 19:40:55 mlhuang Exp $ +# Marc E. Fiuczynski +# Copyright (C) 2004-2007 The Trustees of Princeton University # # Source PLC configuration -if [ -f /etc/planetlab/plc_config ] ; then - . /etc/planetlab/plc_config -else - PLC_BOOT_HOST=boot.planet-lab.org - PLC_API_HOST=www.planet-lab.org - PLC_API_PATH=PLCAPI -fi +. /etc/planetlab/plc_config # Do not tolerate errors set -e +# this is set by plc.d/bootmanager +DEPLOYMENT=$1 + +BOOTSTRAPDIR="/boot" + # Change to our source directory -srcdir=$(cd $(dirname $0) && pwd -P) +cd $(dirname $0) # Source bootmanager configuration -. $srcdir/source/configuration +. source/configuration + +# Write boot script. nodeconfig/boot/index.php retrieves the contents of this script +# after checking the node id + +BMDIR=/var/www/html/boot +mkdir -p $BMDIR + +DEST_SCRIPT="$BMDIR/bootmanager_${DEPLOYMENT}.sh" +# Remove the old version or any sym links prior to re-writing +rm -f ${DEST_SCRIPT} +rm -f ${DEST_SCRIPT}.sgn -# Write boot script. plc_www/boot/index.php writes this script out -# after a nonce check. -DEST_SCRIPT=bootmanager.sh +# hard code 443 here. +sed -i -e "s@^BOOT_API_SERVER.*@BOOT_API_SERVER=https://$PLC_API_HOST:443/$PLC_API_PATH/@" source/configuration -cat > $DEST_SCRIPT < $DEST_SCRIPT #!/bin/bash # # PlanetLab Boot Manager $VERSION @@ -51,38 +82,21 @@ cat > $DEST_SCRIPT < \$UUDECODE - chmod +x \$UUDECODE -fi - +(/usr/bin/uudecode | /bin/tar -C /tmp -xj) << _EOF_ EOF -echo '($UUDECODE | /bin/tar -C /tmp -xj) << _EOF_' >> $DEST_SCRIPT - -# XXX Currently, the value of PLC_API_PORT is set to 80 by default, so -# that the portions of the web site that still use oldapi can continue -# to work. However, the Boot Manager supports HTTPS access, which we -# want to remain the default, so hard code 443 here. -sed -i -e "s@^BOOT_API_SERVER.*@BOOT_API_SERVER=https://$PLC_API_HOST:443/$PLC_API_PATH/@" \ - $srcdir/source/configuration - -# Replace the default debug SSH key -if [ -f "$PLC_DEBUG_SSH_KEY_PUB" ] ; then - install -D -m 644 "$PLC_DEBUG_SSH_KEY_PUB" $srcdir/source/debug_files/debug_root_ssh_key -fi # Embed the uuencoded tarball in the script -tar -cj -C $srcdir source/ | uuencode -m - >> $DEST_SCRIPT +tar -cj source/ -C $extra_libs source/ | uuencode -m - >> $DEST_SCRIPT +# wrap up the script echo '_EOF_' >> $DEST_SCRIPT echo 'cd /tmp/source' >> $DEST_SCRIPT echo 'chmod +x BootManager.py && ./BootManager.py' >> $DEST_SCRIPT +# Remove temp directory +rm -fr $extra_libs + # Sign the whole script, if the keyring is on this machine. if [ -f "$PLC_ROOT_GPG_KEY" -a -f "$PLC_ROOT_GPG_KEY_PUB" ] ; then gpg --homedir=/root \ @@ -94,3 +108,4 @@ if [ -f "$PLC_ROOT_GPG_KEY" -a -f "$PLC_ROOT_GPG_KEY_PUB" ] ; then else echo "Warning: Remember to sign $PWD/$DEST_SCRIPT!" >&2 fi +