Fwd [2]: How to admin a multiple Gentoo Installation (and keep your sanity)
Andrew Cowie <[email protected]> 26 Jul 2003 20:49:44 +1000
| Newsgroups | gmane.linux.gentoo.sysadmin |
|---|---|
| Organization | Operational Dynamics |
| Message-ID | <1059216584.4908.34.camel@localhost> |
Here's the other message. This is awesome, though also a lot of work. I love the way they deal with multiple architectures. Seems like he had to script around a number of awkward things; I wonder what could be done to make it easier? AfC -----Forwarded Message----- From: Andrea Barisani <[email protected]> To: [email protected] Subject: [gentoo-user] How to admin a multiple Gentoo Installation (and keep your sanity) Date: 15 Mar 2003 16:55:09 +0100 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/ root@$i:/ ; done for i in `cat /dist/$1.list` ; do /usr/bin/rsync -vrlptgoD --progress -e ssh /dist/adm/ARCH/$1/ root@$i:/ ; /usr/bin/rsync -vrlptgoD --delete --progress -e ssh /dist/$1/packages/ root@$i:/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/ root@$i:/ ; 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