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

Reply via email to