On Wed, Mar 3, 2010 at 10:07 AM, Iustin Pop <[email protected]> wrote:
> 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.
> ---
>  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" <<EOF
> +(hd0) /dev/sda
> +EOF
> +
> +# execute update-grub
> +chroot "$TARGET" update-grub
> +
> +# install grub to the block device
> +grub-install --no-floppy --root-directory="$TARGET" "$BLOCKDEV"
> +
> +# execute cleanups
> +cleanup
> +trap - EXIT
> +
> +exit 0
> diff --git a/example/hooks/interfaces b/example/hooks/interfaces
> new file mode 100644
> index 0000000..455c396
> --- /dev/null
> +++ b/example/hooks/interfaces
> @@ -0,0 +1,53 @@
> +#!/bin/bash
> +
> +# Copyright (C) 2009 Google Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +# General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> +# 02110-1301, USA.
> +
> +# This is an example script that configures you /etc/network/interfaces after
> +# installation.  By default its sets up the system to use dhcp. To use it 
> just
> +# put it in your CUSTOMIZE_DIR and make it executable.
> +
> +if [ -z "$TARGET" -o ! -d "$TARGET" ]; then
> +  echo "Missing target directory"
> +  exit 1
> +fi
> +
> +if [ ! -d "$TARGET/etc/network" ]; then
> +  echo "Missing target network directory"
> +  exit 1
> +fi
> +
> +if [ -z "$NIC_COUNT" ]; then
> +  echo "Missing NIC COUNT"
> +  exit 1
> +fi
> +
> +if [ "$NIC_COUNT" -gt 0 ]; then
> +
> +  cat > $TARGET/etc/network/interfaces <<EOF
> +# This file describes the network interfaces available on your system
> +# and how to activate them. For more information, see interfaces(5).
> +
> +auto lo
> +iface lo inet loopback
> +
> +auto eth0
> +iface eth0 inet dhcp
> +
> +EOF
> +
> +fi
> diff --git a/example/instance-debootstrap.d/grub 
> b/example/instance-debootstrap.d/grub
> deleted file mode 100755
> index c93dcf5..0000000
> --- a/example/instance-debootstrap.d/grub
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -#!/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" <<EOF
> -(hd0) /dev/sda
> -EOF
> -
> -# execute update-grub
> -chroot "$TARGET" update-grub
> -
> -# install grub to the block device
> -grub-install --no-floppy --root-directory="$TARGET" "$BLOCKDEV"
> -
> -# execute cleanups
> -cleanup
> -trap - EXIT
> -
> -exit 0
> diff --git a/example/instance-debootstrap.d/interfaces 
> b/example/instance-debootstrap.d/interfaces
> deleted file mode 100644
> index 455c396..0000000
> --- a/example/instance-debootstrap.d/interfaces
> +++ /dev/null
> @@ -1,53 +0,0 @@
> -#!/bin/bash
> -
> -# Copyright (C) 2009 Google Inc.
> -#
> -# This program is free software; you can redistribute it and/or modify
> -# it under the terms of the GNU General Public License as published by
> -# the Free Software Foundation; either version 2 of the License, or
> -# (at your option) any later version.
> -#
> -# This program is distributed in the hope that it will be useful, but
> -# WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -# General Public License for more details.
> -#
> -# You should have received a copy of the GNU General Public License
> -# along with this program; if not, write to the Free Software
> -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> -# 02110-1301, USA.
> -
> -# This is an example script that configures you /etc/network/interfaces after
> -# installation.  By default its sets up the system to use dhcp. To use it 
> just
> -# put it in your CUSTOMIZE_DIR and make it executable.
> -
> -if [ -z "$TARGET" -o ! -d "$TARGET" ]; then
> -  echo "Missing target directory"
> -  exit 1
> -fi
> -
> -if [ ! -d "$TARGET/etc/network" ]; then
> -  echo "Missing target network directory"
> -  exit 1
> -fi
> -
> -if [ -z "$NIC_COUNT" ]; then
> -  echo "Missing NIC COUNT"
> -  exit 1
> -fi
> -
> -if [ "$NIC_COUNT" -gt 0 ]; then
> -
> -  cat > $TARGET/etc/network/interfaces <<EOF
> -# This file describes the network interfaces available on your system
> -# and how to activate them. For more information, see interfaces(5).
> -
> -auto lo
> -iface lo inet loopback
> -
> -auto eth0
> -iface eth0 inet dhcp
> -
> -EOF
> -
> -fi
> --
> 1.6.6.2
>
>

LGTM

Reply via email to