From f79e471d4a48a914a74497f2806d7cc54f6cd4b0 Mon Sep 17 00:00:00 2001 From: Iustin Pop Date: Wed, 3 Mar 2010 09:50:12 +0100 Subject: [PATCH] Change the customization directory MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The current customization directory is “$sysconfdir/ganeti/instance-debootstrap.d”. Recently, the variants support has added the variants configuration as “$sysconfdir/ganeti/instance-debootstrap/variants/default.conf”. This means we have two, very similar (instance-debootstrap.d vs. instance-debootstrap) directories under ganeti. This patch changes the customize directory to $sysconfdir/ganeti/instance-debootstrap/hooks. It is more in line with Ganeti's own hooks naming, and removes the old “.d” directory, for a more sane layout. People upgrading, with the default (commented-out) CUSTOMIZE_DIR will need to rename their on-disk directory. Signed-off-by: Iustin Pop Reviewed-by: René Nussbaumer --- README | 29 +++++++++----- common.sh.in | 2 +- defaults | 4 +- example/hooks/grub | 59 +++++++++++++++++++++++++++++ example/hooks/interfaces | 53 ++++++++++++++++++++++++++ example/instance-debootstrap.d/grub | 59 ----------------------------- example/instance-debootstrap.d/interfaces | 53 -------------------------- 7 files changed, 133 insertions(+), 126 deletions(-) create mode 100755 example/hooks/grub create mode 100644 example/hooks/interfaces delete mode 100755 example/instance-debootstrap.d/grub delete mode 100644 example/instance-debootstrap.d/interfaces diff --git a/README b/README index 6c656ab..893804f 100644 --- a/README +++ b/README @@ -58,9 +58,9 @@ named 'defaults' in the source distribution for more details): - EXTRAPKGS: most OSes will need some extra packages installed to make them work nicely under Xen; the example file containts a few suggestions -- CUSTOMIZE_DIR: a directory containing customization script for the instance. - (by default $sysconfdir/ganeti/instance-debootstrap.d) See "Customization of - the instance" below. +- CUSTOMIZE_DIR: a directory containing customization script for the + instance. (by default $sysconfdir/ganeti/instance-debootstrap/hooks) + See "Customization of the instance" below. - GENERATE_CACHE: if 'yes' (the default), the installation process will save and reuse a cache file to speed reinstalls (located under $localstatedir/cache/ganeti-instance-debootstrap) @@ -82,14 +82,15 @@ limiting. Customization of the instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If run-parts is in the os create script, and the CUSTOMIZE_DIR (by default -$sysconfdir/ganeti/instance-debootstrap.d, /etc/ganeti/instance-debootstrap.d -if you configured the os with --sysconfdir=/etc) directory exists any -executable whose name matches the run-parts execution rules (quoting -run-parts(8): the names must consist entirely of upper and lower case -letters, digits, underscores, and hyphens) is executed to allow further -personalization of the installation. The following environment variables are -passed, in addition to the ones ganeti passes to the OS scripts: +If run-parts is in the os create script, and the CUSTOMIZE_DIR (by +default $sysconfdir/ganeti/instance-debootstrap/hooks, +/etc/ganeti/instance-debootstrap/hooks if you configured the os with +--sysconfdir=/etc) directory exists any executable whose name matches +the run-parts execution rules (quoting run-parts(8): the names must +consist entirely of upper and lower case letters, digits, underscores, +and hyphens) is executed to allow further personalization of the +installation. The following environment variables are passed, in +addition to the ones ganeti passes to the OS scripts: TARGET: directory in which the filesystem is mounted SUITE: suite installed by debootstrap (eg: lenny) @@ -137,3 +138,9 @@ The instance is a minimal install: definitions to /etc/network/interfaces - after configuring the network, it is recommended to run ``apt-get update`` so that signatures for the release files are picked up + +.. vim: set textwidth=72 : +.. Local Variables: +.. mode: rst +.. fill-column: 72 +.. End: diff --git a/common.sh.in b/common.sh.in index 6c6c3b9..a72fc9f 100644 --- a/common.sh.in +++ b/common.sh.in @@ -145,7 +145,7 @@ fi : ${SUITE:="lenny"} : ${ARCH:=""} : ${EXTRA_PKGS:=""} -: ${CUSTOMIZE_DIR:="@sysconfdir@/ganeti/instance-debootstrap.d"} +: ${CUSTOMIZE_DIR:="@sysconfdir@/ganeti/instance-debootstrap/hooks"} : ${VARIANTS_DIR:="@sysconfdir@/ganeti/instance-debootstrap/variants"} : ${GENERATE_CACHE:="yes"} : ${CLEAN_CACHE:="14"} # number of days to keep a cache file diff --git a/defaults b/defaults index 467e46e..72d41ac 100644 --- a/defaults +++ b/defaults @@ -39,8 +39,8 @@ # CUSTOMIZE_DIR: a directory containing scripts to customize the installation. # The scripts are executed using run-parts -# By default /etc/ganeti/instance-debootstrap.d -# CUSTOMIZE_DIR="/etc/ganeti/instance-debootstrap.d" +# By default /etc/ganeti/instance-debootstrap/hooks +# CUSTOMIZE_DIR="/etc/ganeti/instance-debootstrap/hooks" # GENERATE_CACHE: if set to yes (the default), create new cache files; # any other value will disable the generation of cache files (but they diff --git a/example/hooks/grub b/example/hooks/grub new file mode 100755 index 0000000..c93dcf5 --- /dev/null +++ b/example/hooks/grub @@ -0,0 +1,59 @@ +#!/bin/bash +# +# This is an example script that install and configure grub after installation. +# To use it put it in your CUSTOMIZE_DIR, make it executable, and edit EXTRAPKGS +# of your $sysconfdir/default/ganeti-instance-debootstrap. +# +# Xen, for etch/lenny i386: +# EXTRA_PKGS="linux-image-xen-686,libc6-xen" +# Xen, for etch/lenny amd64: +# EXTRA_PKGS="linux-image-xen-amd64" +# KVM: +# no extra packages needed besides the normal suggested ones +# +# Do not include grub in EXTRA_PKGS because it will cause error of debootstrap. + +set -e + +. common.sh + +CLEANUP=( ) + +trap cleanup EXIT + +if [ -z "$TARGET" -o ! -d "$TARGET" ]; then + echo "Missing target directory" + exit 1 +fi + +# install grub +LANG=C +chroot "$TARGET" apt-get -y --force-yes install grub grub-common + +# make /dev/sda +mknod $TARGET/dev/sda b $(stat -L -c "0x%t 0x%T" $BLOCKDEV) +CLEANUP+=("rm -f $TARGET/dev/sda") + +# make /dev/sda1 +mknod $TARGET/dev/sda1 b $(stat -L -c "0x%t 0x%T" $FSYSDEV) +CLEANUP+=("rm -f $TARGET/dev/sda1") + +# create grub directory +mkdir -p "$TARGET/boot/grub" + +# create device.map +cat > "$TARGET/boot/grub/device.map" < $TARGET/etc/network/interfaces < "$TARGET/boot/grub/device.map" < $TARGET/etc/network/interfaces <