Why dont you change this to XML format and submit it to Gentoo Documentation or ask them if this would be OK to submit to the Docs section?
Andrea Barisani <[EMAIL PROTECTED]> writes: > Hi to all! > > After having migrated from RedHat Linux to Gentoo on my network (35 hosts + 4 > servers, approx 300 users) I would like to share and discuss my experiences > in handling multiple Gentoo systems installations. This is nothing special > for all the sysadmin out there, however I hope to stimulate discussion and > hear how you manage such installations. > > - Scenario > > 35 client hosts used by our students handled by a central server, three > different architectures: k6 (400 Mhz), p1 (200 Mhz), p4 (1,7 Ghz). > > - Primary objectives > > 1) have a centralized control of all clients installation and administration > 2) find a proper way to optimize the installation on slow machines (p1 and k6) > 3) give the users always the (almost) latest versions of all packages > > Of course Gentoo was the answer :) and since it performs so well on our servers > we have decided to test it and eventually migrate all clients. (with Gentoo > performance on slow hardware has _really_ improved) > > - Description > > The system is composed by the 35 hosts and a central server that compiles and > propagates all packages to the clients, this is done by having 3 different > installations (one for each arch) in three different directories on the > server, packages are built with the '-b' option and then copied and installed > with 'emerge -k' on the clients. Packages and configurations propagation is > all done via rsync. > > Let's see some details: > > On the central server we got: > > /dist/k6 > /dist/p1 > /dist/p4 > > untar stage1 and bootstrap and compile the desired installation in each > directory with the proper arch-dependent optimizations. Since the server > is a Gentoo installation I've used a single /usr/portage: > > mount -o bind /usr/portage /dist/k6/usr/portage > mount -o bind /usr/portage /dist/p1/usr/portage > mount -o bind /usr/portage /dist/p4/usr/portage > > Put any global modified/added file in /dist/adm/GLOBAL/, for example: > > /dist/adm/GLOBAL/etc/fstab > /dist/adm/GLOBAL/boot/grub/grub.conf > /dist/adm/GLOBAL/usr/kde/3.1/share/config/kdm/kdmrx > > ...and so on > > Put any arch-dependent modified/added file in /dist/adm/ARCH/, for example: > > /dist/adm/ARCH/k6/etc/make.conf > /dist/adm/ARCH/p1/etc/make.conf > /dist/adm/ARCH/p4/etc/make.conf > > ...and so on > > Put any host-dependent modified/added file in /dist/adm/LOCAL/, for example: > > /dist/adm/LOCAL/host1/etc/conf.d/net > /dist/adm/LOCAL/host2/etc/conf.d/net > > ...and so on > > Then put all clients hostnames divided by arch in k6.list, p4.list, p1.list > and put every hostname in all.list. > > Now you can sync each configuration with the following scripts. > The first argument is the arch (es. ./rsync-adm k6). These are not > the real scripts, only the core part is shown, I've omitted arguments > verification and some debugging 'echo' :). > > rsync-adm: > /usr/bin/rsync -vrlptgoD --progress /dist/adm/GLOBAL/ /dist/$1/ > /usr/bin/rsync -vrlptgoD --progress /dist/adm/ARCH/$1/ /dist/$1/ > > rsync-host: > for i in `cat /dist/$1.list` ; do > /usr/bin/rsync -vrlptgoD --progress -e ssh /dist/adm/GLOBAL/ [EMAIL > PROTECTED]:/ ; > done > > for i in `cat /dist/$1.list` ; do > /usr/bin/rsync -vrlptgoD --progress -e ssh /dist/adm/ARCH/$1/ [EMAIL > PROTECTED]:/ ; > /usr/bin/rsync -vrlptgoD --delete --progress -e ssh /dist/$1/packages/ [EMAIL > PROTECTED]:/packages/ ; > # my PKGDIR is /packages > done > > for i in `cat /dist/$1.list` ; do > /usr/bin/rsync -vrlptgoD --progress -e ssh /dist/adm/LOCAL/$i/ [EMAIL > PROTECTED]:/ ; > done > > Now on the clients you can mount via NFS in read-only /usr/portage. > However the subdir /usr/portage/distfiles/cvs-src must be writable, a way to > manage this is creating /tmp/portage and use /usr/portage/distfiles/cvs-src > as a mounting point: > > mkdir /tmp/cvs-src ; chown root.portage /tmp/cvs-src ; chmod 4770 /tmp/cvs-src > mount -o bind /tmp/cvs-src /usr/portage/distfiles/cvs-src > > Now packages update and installation can be done like the following: > > # emerge sync > # chroot /dist/p4 > # emerge -b -u --deep world > # emerge distcc > # exit > # for i in `cat /dist/p4.list` ; do ssh $i 'emerge -k -u --deep world' ; done > # for i in `cat /dist/p4.list` ; do ssh $i 'emerge -k distcc' ; done > > - Caveats > > openoffice-bin must be installed on the clients, it doesn't work with -b and > -k, I don't know why however I'll investigate, same problem with mplayer. > > - Notes > > The first idea was maintaining only /dist/arch installations and directly > rsync that tree on the clients, however on slow hardware this is really slow > and the exceptions (/var, /etc/mtab..etc) are too difficult to manage. > > > Hope that someone might find this useful, I'll be happy to hear your comments. > > Bye :) > > -- > ------------------------------------------------------------ > INFIS Network Administrator & Security Officer .*. > Department of Physics - University of Trieste /V\ > [EMAIL PROTECTED] - PGP Key 0x8E21FE82 (/ \) > ---------------------------------------------------- ( ) > "How would you know I'm mad?" said Alice. ^^-^^ > "You must be,'said the Cat,'or you wouldn't have come here." > ------------------------------------------------------------ > > -- > [EMAIL PROTECTED] mailing list > > -- Louis C. Candell -- [EMAIL PROTECTED] mailing list
