From: Eric Price Date: Mon, 28 Jul 2008 03:35:58 +0000 (-0400) Subject: New guest-based autoinstaller X-Git-Tag: sipb-xen-autoinstaller/2.0~3 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-autoinstaller.git/commitdiff_plain/da7db23885fdafeca2346bd27c7ec7f5eb40c3cc?ds=sidebyside New guest-based autoinstaller svn path=/trunk/packages/sipb-xen-guest-installer/; revision=741 --- diff --git a/debian/control b/debian/control index 3add234..2f15ed2 100644 --- a/debian/control +++ b/debian/control @@ -1,12 +1,18 @@ -Source: sipb-xen-guest-installer +Source: sipb-xen-autoinstaller Section: net Priority: extra Maintainer: SIPB Xen Project Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.2.0) Standards-Version: 3.7.2 -Package: sipb-xen-guest-installer +Package: sipb-xen-autoinstaller-guest Architecture: all -Depends: ${misc:Depends}, patch, xen-tools, kpartx -Description: SIPB Xen automatic guest-image installer system +Depends: ${misc:Depends}, patch, xen-tools, kpartx, lvm2 +Description: SIPB Xen automatic guest-image installer system (guest) + This is our automatic guest-image installer system. + +Package: sipb-xen-autoinstaller-host +Architecture: all +Depends: ${misc:Depends} +Description: SIPB Xen automatic guest-image installer system (host) This is our automatic guest-image installer system. diff --git a/debian/control.in b/debian/control.in index 25834b4..e344653 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,12 +1,18 @@ -Source: sipb-xen-guest-installer +Source: sipb-xen-autoinstaller Section: net Priority: extra Maintainer: SIPB Xen Project Build-Depends: @cdbs@ Standards-Version: 3.7.2 -Package: sipb-xen-guest-installer +Package: sipb-xen-autoinstaller-guest Architecture: all -Depends: ${misc:Depends}, patch, xen-tools, kpartx -Description: SIPB Xen automatic guest-image installer system +Depends: ${misc:Depends}, patch, xen-tools +Description: SIPB Xen automatic guest-image installer system (guest) + This is our automatic guest-image installer system. + +Package: sipb-xen-autoinstaller-host +Architecture: all +Depends: ${misc:Depends} +Description: SIPB Xen automatic guest-image installer system (host) This is our automatic guest-image installer system. diff --git a/domU/etc/init.d/rcS b/domU/etc/init.d/rcS new file mode 100644 index 0000000..d786d7d --- /dev/null +++ b/domU/etc/init.d/rcS @@ -0,0 +1,16 @@ +#!/bin/sh +for x in $(cat /proc/cmdline); do + case $x in + ip=*) + /usr/lib/klibc/bin/ipconfig -d ${x#ip=} + ;; + noinstall) + exit 0 + ;; + esac +done +mount -t tmpfs none /var/log +mount -t tmpfs none /tmp +sipb-xen-install +busybox poweroff +exit 0 diff --git a/domU/usr/sbin/sipb-xen-install b/domU/usr/sbin/sipb-xen-install index de4fb01..5f467ff 100644 --- a/domU/usr/sbin/sipb-xen-install +++ b/domU/usr/sbin/sipb-xen-install @@ -2,29 +2,12 @@ TARGET=/dev/hda -#For some strange reason, . $TARGET doesn't work reliably. +# Read in the environment variables +# For some strange reason, . $TARGET doesn't work reliably. eval `grep -a -m1 -B 100 ^return$ $TARGET | grep -v return` - -#HOSTNAME=foobar -#DIST=etch -#MIRROR=http://debian.lcs.mit.edu/debian -#IMAGESIZE=3800 - ARCH=amd64 -#LVSIZE=`lvs --noheadings --units M --nosuffix -o Size /dev/xenvg/d_foobar_hda | sed 's/\..*//'` - -# If this script is interrupted, it may not clean up after itself. -# In particular, it may leave ${VOLUME}1 mounted somewhere in tmp. -# Unmount it, then kpartx -d $VOLUME to clean up. - -### -### Create the device for SIPB-Xen purposes -### echo ,${IMAGESIZE}$',L,*\n,,S\n;\n;' | sfdisk -uM -H 255 -S 63 $TARGET -#kpartx -a $TARGET - -xen-create-image --image-dev ${TARGET}1 --swap-dev ${TARGET}2 --fs ext3 --ide --arch $ARCH --dist $DIST --hostname $HOSTNAME --mirror $MIRROR --dhcp --cache=yes -#kpartx -d $TARGET +xen-create-image --image-dev ${TARGET}1 --swap-dev ${TARGET}2 --fs ext3 --ide --arch $ARCH --dist $DIST --hostname $HOSTNAME --mirror $MIRROR --ip=$IP --netmask=255.255.0.0 --gateway=18.181.0.1 --cache=yes diff --git a/files/etc/xen/autoinstall.cfg b/files/etc/xen/autoinstall.cfg new file mode 100644 index 0000000..88db3fd --- /dev/null +++ b/files/etc/xen/autoinstall.cfg @@ -0,0 +1,45 @@ +# +# Configuration file for the Xen instance foobar, created +# by xen-tools 3.7 on Sat Jun 21 16:24:54 2008. +# + +# +# Kernel + memory size +# +#bootloader = '/usr/lib/xen-default/bin/pygrub' +kernel = '/boot/vmlinuz-2.6.24-19-xen' +ramdisk = '/boot/initrd.img-2.6.24-19-xen' +memory = '256' + + +# +# Hostname +# +name = 'd_foobar2' + + +# +# Disk device(s). +# +disk = [ + 'phy:/dev/xenvg/%s_hda,hdb,r' % name, + 'phy:/dev/xenvg/d_%s_hda,hda,w' % target, + ] + +root = '/dev/hdb1' +extra = 'ro noresume ip=18.181.0.216::18.181.0.1:255.255.0.0:foobar2:eth0:off' + +# +# Networking +# +vif = [ 'ip=18.181.0.216,mac=00:16:3e:00:2c:ee,script=vif-bridge' ] + +# +# Behaviour +# +on_poweroff = 'destroy' +on_reboot = 'restart' +on_crash = 'destroy' + + + diff --git a/files/srv/guest-installer/etch/cdrom.patch b/files/srv/guest-installer/etch/cdrom.patch deleted file mode 100644 index e69de29..0000000 diff --git a/files/srv/guest-installer/etch/cdrom.supplement/isolinux/isolinux.cfg b/files/srv/guest-installer/etch/cdrom.supplement/isolinux/isolinux.cfg deleted file mode 100644 index b8c2935..0000000 --- a/files/srv/guest-installer/etch/cdrom.supplement/isolinux/isolinux.cfg +++ /dev/null @@ -1,6 +0,0 @@ -PROMPT 1 -TIMEOUT 0 -DEFAULT sipb-xen-install -LABEL sipb-xen-install - kernel /install.amd/vmlinuz - append auto=true preseed/file=/cdrom/preseed.cfg priority=critical vga=normal fb=false initrd=/install.amd/initrd.gz -- diff --git a/files/srv/guest-installer/etch/iso.url b/files/srv/guest-installer/etch/iso.url deleted file mode 100644 index dc01ddf..0000000 --- a/files/srv/guest-installer/etch/iso.url +++ /dev/null @@ -1 +0,0 @@ -http://cdimage.debian.org/debian-cd/4.0_r1/amd64/iso-cd/debian-40r1-amd64-businesscard.iso diff --git a/files/srv/guest-installer/etch/preseed.cfg b/files/srv/guest-installer/etch/preseed.cfg deleted file mode 100644 index 72d59ab..0000000 --- a/files/srv/guest-installer/etch/preseed.cfg +++ /dev/null @@ -1,224 +0,0 @@ -#### Contents of the preconfiguration file -d-i debian-installer/locale string en_US -d-i console-keymaps-at/keymap select us - -### Network configuration -# netcfg will choose an interface that has link if possible. This makes it -# skip displaying a list if there is more than one interface. -d-i netcfg/choose_interface select auto - -#d-i netcfg/dhcp_timeout string 1 -d-i netcfg/use_dhcp boolean true - -# Any hostname and domain names assigned from dhcp take precedence over -# values set here. However, setting the values still prevents the questions -# from being shown, even if values come from dhcp. -# at bottom #d-i netcfg/get_hostname string fillme -d-i netcfg/get_domain string mit.edu - -# Disable that annoying WEP key dialog. -d-i netcfg/wireless_wep string - -### Mirror settings -# If you select ftp, the mirror/country string does not need to be set. -#d-i mirror/protocol string ftp -d-i mirror/country string enter information manually -d-i mirror/http/hostname string debian.lcs.mit.edu -d-i mirror/http/directory string /debian -d-i mirror/http/proxy string - -# Suite to install. -#d-i mirror/suite string testing -# Suite to use for loading installer components (optional). -#d-i mirror/udeb/suite string testing - -### Partitioning -# If the system has free space you can choose to only partition that space. -# Note: this must be preseeded with a localized (translated) value. -#d-i partman-auto/init_automatically_partition \ -# select Guided - use the largest continuous free space - -# Alternatively, you can specify a disk to partition. The device name -# can be given in either devfs or traditional non-devfs format. -# For example, to use the first disk: -d-i partman-auto/disk string /dev/discs/disc0/disc -# In addition, you'll need to specify the method to use. -# The presently available methods are: "regular", "lvm" and "crypto" -d-i partman-auto/method string regular - -# If one of the disks that are going to be automatically partitioned -# contains an old LVM configuration, the user will normally receive a -# warning. This can be preseeded away... -d-i partman-auto/purge_lvm_from_device boolean true -# And the same goes for the confirmation to write the lvm partitions. -#d-i partman-lvm/confirm boolean true - -# You can choose from any of the predefined partitioning recipes. -# Note: this must be preseeded with a localized (translated) value. -d-i partman-auto/choose_recipe \ - select All files in one partition (recommended for new users) -#d-i partman-auto/choose_recipe \ -# select Separate /home partition -#d-i partman-auto/choose_recipe \ -# select Separate /home, /usr, /var, and /tmp partitions - -# Or provide a recipe of your own... -# The recipe format is documented in the file devel/partman-auto-recipe.txt. -# If you have a way to get a recipe file into the d-i environment, you can -# just point at it. -#d-i partman-auto/expert_recipe_file string /hd-media/recipe - -# If not, you can put an entire recipe into the preconfiguration file in one -# (logical) line. This example creates a small /boot partition, suitable -# swap, and uses the rest of the space for the root partition: -#d-i partman-auto/expert_recipe string \ -# boot-root :: \ -# 40 50 100 ext3 \ -# $primary{ } $bootable{ } \ -# method{ format } format{ } \ -# use_filesystem{ } filesystem{ ext3 } \ -# mountpoint{ /boot } \ -# . \ -# 500 10000 1000000000 ext3 \ -# method{ format } format{ } \ -# use_filesystem{ } filesystem{ ext3 } \ -# mountpoint{ / } \ -# . \ -# 64 512 300% linux-swap \ -# method{ swap } format{ } \ -# . - -# This makes partman automatically partition without confirmation. -d-i partman/confirm_write_new_label boolean true -d-i partman/choose_partition \ - select Finish partitioning and write changes to disk -d-i partman/confirm boolean true - -### Clock and time zone setup -# Controls whether or not the hardware clock is set to UTC. -d-i clock-setup/utc boolean true - -# You may set this to any valid setting for $TZ; see the contents of -# /usr/share/zoneinfo/ for valid values. -d-i time/zone string US/Eastern - -### Apt setup -# You can choose to install non-free and contrib software. -#d-i apt-setup/non-free boolean true -#d-i apt-setup/contrib boolean true -# Uncomment this if you don't want to use a network mirror. -#d-i apt-setup/use_mirror boolean false -# Uncomment this to avoid adding security sources, or -# add a hostname to use a different server than security.debian.org. -#d-i apt-setup/security_host string - -# Additional repositories, local[0-9] available -#d-i apt-setup/local0/repository string \ -# deb http://local.server/debian stable main -#d-i apt-setup/local0/comment string local server -# Enable deb-src lines -#d-i apt-setup/local0/source boolean true -# URL to the public key of the local repository; you must provide a key or -# apt will complain about the unauthenticated repository and so the -# sources.list line will be left commented out -#d-i apt-setup/local0/key string http://local.server/key - -# By default the installer requires that repositories be authenticated -# using a known gpg key. This setting can be used to disable that -# authentication. Warning: Insecure, not recommended. -#d-i debian-installer/allow_unauthenticated string true - -### Account setup -# Skip creation of a root account (normal user account will be able to -# use sudo). -#d-i passwd/root-login boolean false -# Alternatively, to skip creation of a normal user account. -d-i passwd/make-user boolean false - -# Root password, either in clear text -#d-i passwd/root-password password r00tme -#d-i passwd/root-password-again password r00tme -# or encrypted using an MD5 hash. -# at bottom #d-i passwd/root-password-crypted password [MD5 hash] - -# To create a normal user account. -#d-i passwd/user-fullname string Debian User -#d-i passwd/username string debian -# Normal user's password, either in clear text -#d-i passwd/user-password password insecure -#d-i passwd/user-password-again password insecure -# or encrypted using an MD5 hash. -#d-i passwd/user-password-crypted password [MD5 hash] - -### Base system installation -# Select the initramfs generator used to generate the initrd for 2.6 kernels. -#d-i base-installer/kernel/linux/initramfs-generators string yaird - -### Boot loader installation -# Grub is the default boot loader (for x86). If you want lilo installed -# instead, uncomment this: -#d-i grub-installer/skip boolean true - -# This is fairly safe to set, it makes grub install automatically to the MBR -# if no other operating system is detected on the machine. -d-i grub-installer/only_debian boolean true - -# This one makes grub-installer install to the MBR if it also finds some other -# OS, which is less safe as it might not be able to boot that other OS. -d-i grub-installer/with_other_os boolean true - -# Alternatively, if you want to install to a location other than the mbr, -# uncomment and edit these lines: -#d-i grub-installer/only_debian boolean false -#d-i grub-installer/with_other_os boolean false -#d-i grub-installer/bootdev string (hd0,0) -# To install grub to multiple disks: -#d-i grub-installer/bootdev string (hd0,0) (hd1,0) (hd2,0) - -### Package selection -tasksel tasksel/first multiselect standard - -# Individual additional packages to install -#d-i pkgsel/include string openssh-server build-essential - -### Finishing up the first stage install -# Avoid that last message about the install being complete. -d-i finish-install/reboot_in_progress note - -# This will prevent the installer from ejecting the CD during the reboot, -# which is useful in some situations. -#d-i cdrom-detect/eject boolean false - -### Preseeding other packages -# Depending on what software you choose to install, or if things go wrong -# during the installation process, it's possible that other questions may -# be asked. You can preseed those too, of course. To get a list of every -# possible question that could be asked during an install, do an -# installation, and then run these commands: -# debconf-get-selections --installer > file -# debconf-get-selections >> file - - -#### Advanced options -### Running custom commands during the installation -# d-i preseeding is inherently not secure. Nothing in the installer checks -# for attempts at buffer overflows or other exploits of the values of a -# preconfiguration file like this one. Only use preconfiguration files from -# trusted locations! To drive that home, and because it's generally useful, -# here's a way to run any shell command you'd like inside the installer, -# automatically. - -# This first command is run as early as possible, just after -# preseeding is read. -#d-i preseed/early_command string anna-install some-udeb - -# This command is run just before the install finishes, but when there is -# still a usable /target directory. You can chroot to /target and use it -# directly, or use the apt-install and in-target commands to easily install -# packages and run commands in the target system. -#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh - - - -# sipb-xen: automatically filled-in values get appended here. -# at bottom #d-i passwd/root-password-crypted password [MD5 hash] diff --git a/files/usr/sbin/sipb-xen-install b/files/usr/sbin/sipb-xen-install index 7d82f06..ad72827 100644 --- a/files/usr/sbin/sipb-xen-install +++ b/files/usr/sbin/sipb-xen-install @@ -1,6 +1,6 @@ -#!/bin/sh +#!/bin/bash -export PATH #WTF? +export PATH HOSTNAME="$2" DIST="$3" @@ -8,34 +8,15 @@ MIRROR="$4" IMAGESIZE="$5" IP="$6" -ARCH=amd64 +VOLUME=/dev/mapper/xenvg-d_${HOSTNAME}_hda -#LVSIZE=`lvs --noheadings --units M --nosuffix -o Size /dev/xenvg/d_foobar_hda | sed 's/\..*//'` +cat > $VOLUME <