[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Proposal: how to setup and manage the computer infrastructure



Hi,

below you'll find my ideas/plan how to setup and maintain the computers at 
debconf5 - which is reusable for debconf6++ ;)

In one sentence it's: we install Debian sarge (*) with d-i and/or FAI (*2) and 
update the configuration files and packages with FAI.

Since fai 2.8 (*3), fai has a new feature called "softupdate", which is 
capable of running on a running system.  To automatically invoke it from a 
d-i install, you'll have to use d-i's preseeding mechanism, otherwise you'll 
have to execute four commands manually:

base-config    base-config/late_command        string apt-get -y install fai \
    && wget http://$somehost/fai.conf -O /etc/fai/fai.conf && mkdir -p /fai \
    && fai softupdate 

Since we can run "fai softupdate" every time we changed something in the fai 
configdir, it's very easy to update systems (and keep them uptodate) and 
distribute configuration changes.

Also we can start working on the configdir now, develop and test the classes 
(and packages and configuration files) before debconf5. This is IMO the main 
and best feature: we can work on the setup at home||work before debconf - and 
we don't have to do manual works which is error-prone and boring.

The configdir can be provided via nfs or cvs. Subversion needs _very_ few 
work, which I volunteer to do (as I will do that anyway...) - then we can 
host the fai-configdir on alioth.

FAI's softupdate uses the exact same configdir as normal FAI, so we can easily 
mix fai and d-i installs. 

Very short explaination how FAI works:

FAI uses a class concept, to determine how to install the system. To define 
the classes, multiple scripts are run on the installed client-system. So you 
can easily define classes based on hostnames or hardware, e.g.
case $hostname in
	nb-*) echo NOTEBOOK DESKTOP ;; 	# two different classes
	nb-video-*) echo NOTEBOOK DESKTOP VIDEOSERVER ;; # three
esac
Classes have priorities, the priority is determined by the order they are 
defined. First defined = lowest priority. The priority determines the order 
the scripts are executed (see below) or which file-template (see below) gets 
copied.

Each class can define packages, which are all added and installed on the host. 
For example, package_config/DESKTOP might contain
PACKAGES install
kde gnome vim emacs foo bar

Then, for each class, scripts get executed (ordered by priority) - multiple 
scripts (bash, cfengine, perl, whatever) for each class are possible. Within 
the scripts you can do everything, even compiling applications (although it's 
much wiser to package them and install via the packages mechanism).

Last but not least, there are templates for files, like 
files/etc/apt/sources.list/NOTEBOOK or 
files/etc/apt/sources.list/VIDEOSERVER. The template with the highest 
priority gets copied onto the system (*4). Optionally it's also possible to 
define postinst-scripts for each template-file. (e.g. after the apache config 
gets copied, the apache-config-postinst-script restarts apache.)

I skipped the partitioning stuff in this explaination as well as using hooks, 
to name the two most important things I skipped ;) Hooks are a very powerful 
mechanism which basically allow to modify every task on a class basis (fai is 
divided into tasks, like task-define-classes, task-install-packages, ...).


Please ask any questions and raise any concerns you have about fai! 
I dont have any other idea how to maintain such a mixed hardware and software 
setup like debconf5 (i386 servers and notebooks, amd64, ppc - so cloning (aks 
using images) wont work very well). And reinventing the wheel 
(using+developing custom made scripts, plus subversion and maybe cfengine) 
IMO doesnt make sense.

I'll happily setup a basic fai_configdir for a start and give as much support 
as I can (besides activly working on the configdir for debconf). I have 
almost three years experience with FAI and Thomas Lange, the author, will 
also attend debconf5. I'm pretty sure, he and #fai will help as well.

We should discuss (and possible decide) on this proposal at tonights irc 
meeting (19 utc), I'll put it on the agenda now. 


regards,
	Holger


(*) Sarge plus some packages taken from somewhere else, like ldap from 
debian-edu plus custom made packages (e.g. for some video software)

(*2) http://www.informatik.uni-koeln.de/fai

(*3) it was available as seperate patches for several years before.

(*4) people knowing fai might want to add, that you have to execute 
fcopy-commands for each template file. That is right and wrong: executing 
"fcopy -r /" once is sufficient - it copies all template files that are 
defined for the classes the host belongs to.

Attachment: pgp__F20rObiO.pgp
Description: PGP signature


Reply to: