package_config -> boolean operations possible?
Thomas Neumann
blacky+fai at fluffbunny.de
Thu Jul 10 21:21:50 CEST 2008
hiya
I'd like fai to decide which packages to install on a given host to be a
bit more customizable. At least I think so. There may be a different
way, which I'm to blind to see.
[Note: I'm using the same config-space for debian / ubuntu / 32bit /
64bit. I'm using 4 different nfsroots for debian 32, debian 64, ubuntu
32 and ubuntu64. By calling lsb_release in the nfsroot it's possible to
figure out which OS is requested for installation. I'm currently
pondering whether to use just a 32bit and a 64bit nfsroot and deliver
the decision which OS to install via a kernel parameter. I'm booting the
machines via PXE.]
Okay, I have played around a bit with classes and here's the following
scenario:
If the installation client is supposed to be a debian 32 bit box, then
the class "DEBIAN32" get's set. If it's 64bit, then DEBIAN64, same with
UBUNTU32 and UBUNTU64. (Actually this is a kind of workaround already.)
Additionally if the scripts identifies the machine it's running on as a
virtual box then the class VIRTXEN or VIRTVMW gets set accordingly. (I
also need this later on to install XenTools / VMwareTools.)
Now when it comes to choosing a kernel image i'd like to be able to do
the following
if it's a physical debian 32bit -> install linux-image-686
if it's a physical debian 64bit -> install linux-image-amd64
if it's a physical ubuntu -> install linux-image-server
if it's a xen-virtualised debian 32bit -> install linux-image-xen-686
if it's a xen-virtualised debian 64bit -> install linux-image-xen-amd64
if it's a xen-virtualisted ubuntu -> install linux-image-xen
(treat vmware / VIRTVMW as a physical server)
the package_config/DEFAULT may possibly look something like this:
PACKAGES aptitude DEBIAN and I686
linux-image-686
memtest86+
PACKAGES aptitude DEBIAN and AMD64
linux-image-amd64
memtest86+
[...]
PACKAGES aptitude DEBIAN and I686 and VIRTXEN
linux-image-686-
linux-image-686-xen
[...]
Is this possible? Or is there a better / different way?
tschüß
thomas
appended for reference:
=== Detecting operating system ===
class/15-osdetect
#! /bin/bash
# Debian? Ubuntu?
if [ -x /usr/bin/lsb_release ] ; then
FLAVOUR=$(lsb_release -i|cut -f2|tr a-z A-Z)
# 32 or 64bit?
ARCH=$(uname -m)
case $ARCH in
# old style
i686)
echo ${FLAVOUR}32
;;
amd64)
echo ${FLAVOUR}64
;;
# new style
x86_32)
echo ${FLAVOUR}32
;;
x86_64)
echo ${FLAVOUR}64
;;
esac
fi
exit 0
=== virtualization software ===
class/90-vmdetect
#! /bin/bash
# Physical? Virtualized?
# Xen?
# There are some ACPI messages
if [ x"$(dmesg|grep "ACPI.*Xen")" != x ] ; then
echo VIRTXEN
fi
# VMware?
# The harddisk VendorID is quite telling
DISKVENDORID=`dmesg|grep "Vendor: "|cut -d" " -f4`
if [ x${DISKVENDORID} = xVMWARE ] ; then
echo VIRTVMW
fi
exit 0
More information about the linux-fai
mailing list