We want to know, with what configuration (version of the image) each node was booted.
Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run. /etc/IMGVERSION cat look like:
smbec02n001(smbec02b01n01):~ #cat /etc/IMGVERSION
#-- $Id: base.pkglist,v 1.4 2008/09/02 15:40:12 sikorsky Exp $
#-- $Id: base.exlist,v 1.3 2008/09/02 14:57:08 sikorsky Exp $
#-- $Id: base.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
#-- $Id: base.repolist,v 1.3 2008/09/02 14:57:08 sikorsky Exp $
$Id: syslog,v 1.2 2008/09/02 14:54:29 sikorsky Exp $
$Id: remoteshell,v 1.2 2008/09/02 14:54:29 sikorsky Exp $
$Id: sa_set_net,v 1.5 2008/09/04 11:32:07 gdasstm Exp $
$Id: sa_gpfs,v 1.4 2008/09/02 17:30:05 sikorsky Exp $
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2137 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
1) In initrd, bring up aside from main interface (genimage -i option) also other interfaces (-r option).
2) /etc/resolv.conf creation needed to be rewritten, othewise it gets confused by several dhcpcd records.
3) Fill database with MAC addresses for all interfaces. Since it't not possible to have several stanzas of the same name in dhcpd.conf, we need to define unique "alias" for every interface. For example, for host "host1" we will add '00:1A:64:5D:1B:84!host1e0|00:1A:64:5D:1B:86!host1e1' to macs table. Of course, this aliases have to be defined in DNS, otherwise makedhcp command will not use this aliases:
/etc/hosts:
10.217.249.232 host1 host1e0 host1e1
Since this are aliases (need not be nessesary), both interfaces get the same IP address during initrd, but this doesn't break anything.
a) blades - changed getmacs function to gather all MAC addresses. Which interfaces we are interested in are defined in noderes.installnic or noderes.primarynic as "eth0|eth1".
b) all other - TODO. We have only 8 non-blade nodes, so we fill database manually.
Backwards compatible:
- if there is only one interface in noderes.installnic, getmacs function gathers only this one MAC address
- if we run genimage without -r option, only one interface is brought up
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2124 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
Purpose is to 1) keep track of changes in CVS, so force users to do any changes via CVS system and 2) avoid malicious behaviour of users.
I don't want to break trunk, so it's commented out.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2123 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This script is used to copy all files belonging to one profile (.pkglist .exlist .postinstall .repolist) to another name.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2122 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
{profile}.repolist contains list of custom repositories (directory with rpms). Repositories will be added to the image before package installation. This makes possible to automatically install (by defining in {profile}.pkglist) packages that are not contained in standard distribution repository.
Example sles/compute.repolist provided.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2120 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
{profile}.postinstall script is run after all packages from $profile.pkglist are installed. This makes possible to do any kind of magic with the image.
Example sles/compute.postinstall provided.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2119 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd