Lazy client, part II
I want to quiet, full blown PC, without fans nor a harddisk in my living room. See my other blog about this subject
Currently I’m thinking about the following setup:
- NFS4 root
- some sort of configuration management
I wanted to use puppet, but after seeing it use more than 30% of my main memory – This is on a AMD64 Ubuntu server – I was ready to ditch it.
I’ve also have experience with cfengine
, so I’m going to use that. In
conjunction with svn
. I’m going to store all my configs + cfengine
files in one repository. The modus operandi will become:
- edit a file
- check it into subversion
- periodically check out the subversion to a directory where cfengine will look for updates - this will probably happen every 5 minutes
- let cfegine distribute the changes to other machine
- let the
cfagent
on the different machine figure out what to do.
So this blog is now becomming a post on how to configure cfengine :)
CFegine⌗
The shortest none trivial snippet I could think of is
control:
actionsequence = ( shellcommands )
shellcommands:
!motd::
"/bin/echo Danger Robinson!" define=motd
motd::
"/bin/echo Ha ha after the first echo!"
Note: no spaces are allowed in define=motd
. With this you can get
extra ordering.
From here we can do wilder stuff, like for instance getting
a copy from the motd
file and running a post processing
which is needed in Debian:
uname -snrvm > /var/run/motd
[ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd
/etc/motd
is a symlink pointing to /var/run/motd
.
All commands in the shellcommands
section should begin with a
/
, hence the weird looking: /usr/bin/[
.
Going about this, I’m getting to the following snippet:
control:
actionsequence = ( copy shellcommands )
copy:
/home/miekg/svn/etc/branches/elektron/motd.tail
dest=/etc/motd.tail
mode=644
owner=root
group=root
define=motd_copied
shellcommands:
motd_copied::
"/bin/uname -snrvm > /var/run/motd"
"/usr/bin/[ -f /etc/motd.tail ] && /bin/cat /etc/motd.tail >> /var/run/motd"
Which will update /etc/motd
if there is a change.
Subversion⌗
I’ve created a subversion repository where I’m going to put these files
in. A cronjob will periodically check this out into /etc/cfengine
so
that cfengine
will pick up any new changes automatically.
Testing⌗
I’ve found that sudo cfagent -Hnvf cfagent.conf
is a very neat way to
test out any given cfagent.conf
, before deploying it for real.
Later on I will blog some more about the precise setup I’m going to use.