From: Mark Huang Date: Thu, 1 Sep 2005 17:08:50 +0000 (+0000) Subject: - Pre-package vserver-reference instead of building it on nodes X-Git-Tag: planetlab-3_2-branch-point~17 X-Git-Url: http://git.onelab.eu/?p=sliceimage.git;a=commitdiff_plain;h=311f1f92344b4a9e950649b134b11debbec6ae71 - Pre-package vserver-reference instead of building it on nodes --- diff --git a/vserver-reference.init b/vserver-reference.init index 42263df..6033307 100755 --- a/vserver-reference.init +++ b/vserver-reference.init @@ -1,60 +1,20 @@ #!/bin/bash # -# vserver-reference Builds VServer reference -# -# Load before pl_conf, pl_nm, vcached, and vservers -# chkconfig: 3 60 80 -# description: Builds VServer reference image +# Builds VServer reference image. Requires the web and boot servers to +# be up, which complicates bootstrap. Alternatively, we could require +# the build server to host a local yum repository. # # Mark Huang -# Copyright (C) 2004 The Trustees of Princeton University +# Copyright (C) 2004-2005 The Trustees of Princeton University # -# $Id: vserver-reference.init,v 1.7 2004/11/29 20:19:13 mlhuang Exp $ +# $Id: vserver-reference.init,v 1.8 2005/03/31 22:34:42 mlhuang Exp $ # -case "$1" in - start|restart|reload) - ;; - stop|status) - exit 0 - ;; - *) - echo $"Usage: $0 {start|stop|restart|status}" - exit 1 - ;; -esac - -# Source function library. -. /etc/init.d/functions - -# VServer definitions -. /usr/lib/util-vserver/util-vserver-vars - -# Save stdout and stderr -exec 3>&1 -exec 4>&2 - -# Redirect stdout and stderr to a log file -exec 2>&1 -exec &>/var/log/vserver-reference.log +YUM_CONF="http://www.planet-lab.org/PlanetLabConf/v3-yum.conf" # Make /vservers -mkdir -p $VROOTDIR -chmod 000 $VROOTDIR -$PKGLIBDIR/setattr --barrier $VROOTDIR - -# Build image in /vservers/.vtmp -mkdir -p $VROOTDIR/.vtmp -VROOT=$(mktemp -d $VROOTDIR/.vtmp/vserver-reference.XXXXXX) - -# Make /vservers/.vtmp/vserver-reference.XXXXXX -mkdir -p $VROOT -chmod 755 $VROOT - -echo -n $"Building VServer reference: " >&3 2>&4 - -# Clean up before exiting if anything goes wrong -trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; rm -rf $VROOT ; failure >&3 2>&4 ; echo >&3 2>&4 ; exit 255" ERR +VROOT=$PWD/vservers/vserver-reference +install -d -m 755 $VROOT MAKEDEV () { @@ -67,8 +27,13 @@ MAKEDEV () mknod -m 644 $VROOT/dev/urandom c 1 9 mknod -m 666 $VROOT/dev/tty c 5 0 mknod -m 666 $VROOT/dev/ptmx c 5 2 + # For bash command substitution ln -nsf ../proc/self/fd /dev/fd + # For df and linuxconf touch $VROOT/dev/hdv1 + # For TUN/TAP + mkdir -p $VROOT/dev/net + mknod -m 600 $VROOT/dev/net/tun c 10 200 } # Initialize /dev in reference image @@ -82,6 +47,9 @@ mount -t devpts none $VROOT/dev/pts mkdir -p $VROOT/proc mount -t proc none $VROOT/proc +# Clean up before exiting if anything goes wrong +trap "umount $VROOT/proc ; umount $VROOT/dev/pts" ERR + # Create a dummy /etc/fstab in reference image mkdir -p $VROOT/etc cat > $VROOT/etc/fstab < $VROOT/etc/rpm/macros <&3 2>&4 -echo >&3 2>&4 exit 0 diff --git a/vserver-reference.spec b/vserver-reference.spec index 14eed93..c7ba4cd 100644 --- a/vserver-reference.spec +++ b/vserver-reference.spec @@ -1,6 +1,6 @@ %define name vserver-reference -%define version 3.0 -%define release 5.planetlab%{?date:.%{date}} +%define version 3.1 +%define release 1.planetlab%{?date:.%{date}} Vendor: PlanetLab Packager: PlanetLab Central @@ -15,9 +15,11 @@ Source0: %{name}-%{version}.tar.bz2 License: GPL Group: Applications/System BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -BuildArchitectures: noarch Requires: util-vserver, e2fsprogs, yum +AutoReqProv: no +%define debug_package %{nil} + %description This package creates the virtual server (VServer) reference image used as the installation base for new PlanetLab slivers. @@ -26,23 +28,58 @@ as the installation base for new PlanetLab slivers. %setup -q %build +RPM_BUILD_DIR=$RPM_BUILD_DIR ./%{name}.init %install rm -rf $RPM_BUILD_ROOT -install -D -m 755 %{name}.init $RPM_BUILD_ROOT/%{_initrddir}/%{name} +find vservers/vserver-reference | cpio -p -d -u $RPM_BUILD_ROOT/ %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) -%{_initrddir}/%{name} +/vservers/vserver-reference %post -chkconfig --add %{name} -chkconfig %{name} on +VROOT=/vservers/vserver-reference + +# Make sure the barrier bit is set +setattr --barrier /vservers + +# Copy configuration files from host to reference image +for file in /etc/hosts /etc/resolv.conf /etc/yum.conf ; do + if [ -f $file ] ; then + echo $file | cpio -p -d -u $VROOT + fi +done + +# Install and parse Management Authority (MA) configuration +if [ -r /etc/planetlab/primary_ma ] ; then + . /etc/planetlab/primary_ma + install -D -m 644 /etc/planetlab/primary_ma $VROOT/etc/planetlab/primary_ma +elif [ -d /mnt/cdrom/bootme/cacert ] ; then + MA_NAME="PlanetLab Central" + MA_BOOT_SERVER=$(head -1 /mnt/cdrom/bootme/BOOTSERVER) + MA_BOOT_SERVER_CACERT=/mnt/cdrom/bootme/cacert/$MA_BOOT_SERVER/cacert.pem + cat > $VROOT/etc/planetlab/primary_ma < $VROOT/mnt/cdrom/bootme/BOOTSERVER %changelog +* Tue Sep 1 2005 Mark Huang 3.1-1.planetlab +- Pre-package vserver-reference instead of building it on nodes + * Tue Nov 30 2004 Mark Huang 3.0-5.planetlab - PL3118 and PL3131 fix: set barrier bit on /vservers instead of old immulink bit. Do not reset the immutable bit on the new