Lazy client, part IV
Ok, so far I’ve created a cfengine
setup that works. On
my main host ’elektron’ I’ve created a /export/nfsroot/x86
directory. This holds the general files for the x86 Ubuntu
lazy clients. With 2 scripts (see below) I can easily create a
whole new x86
from scratch. Bringing up new lazy clients is
even more easy, once the groundwork is there.
I only need to do three things:
- fix the DNS (forward and reverse)
- fix the DHCP and add an ip address.
- add this ip address to some cfengine file (2 in total)
- optionally add some extra configuration in cfengine for this specific host.
Create a generic lazy client from scratch⌗
There is one script that creates a new host in a chroot
ed environment,
it starts a debootstrap
and after that calls a follow-up script to
finish the configuration for this host - after this step cfengine
takes over. The second stage script takes care of setting up the
sources.list
for apt and a preliminary /etc/hosts
file. Cfengine
fixes everything else.
After this step I can mv the chroot
ed Linux install to the correct
directory and let cfengine
take over.
So when installing a completely new lazy client I need to perform the following steps:
1. mkdir linux.$$
2. cd linux.$$
3 ~/lazy/chroot-lazy-p1 x86 dapper (calls chroot-lazy-p2 when finished)
4. cd ..
5. mv linux.$$ /export/nfsroot/x86
6. cfagent -v
Step 6 is the most complex one, it triggers on the existence of the
/export/nfsroot/x86
directory, hence step 5 above. When this
directory is found the following cfengine script is called:
elektron/nfsroot/_init.cf
, which in turn will execute other
scripts which takes care of the post-configuration of this host.
All the configuration which is done now will be shared by all
lazy clients. But as I’ve already written (link to part 3),
I may also need some per host configuration. This is done
running cfengine
as part of the booting process. When this
cfengine
is running all changes will be made to the ramdisk
which holds /etc
. Typical tasks may be to setup user accounts
and a message of the day which may be different on each lazy client.
#Closing remarks This solution is scalable to – I think – 50 to 100 lazy clients. So for medium sized networks. The initial setup is complicated, but adding new lazy clients is easy enough to be scriptable.
If you want to scale it up more you need to look a thin clients, but those are less powerful and you may need network audio and local devices (USB sticks) may not be fully supported.