Puppet With Runit

Author: Peter Hoeg <peter@…>

The purpose of this page is to describe how to run puppet(master)d under runit as opposed to the normal SysV unit scheme.

Missing items will be updated shortly

Assumption

  • Puppet is properly configured and running using the standard SysV init scheme
  • Runit is properly configured
  • You are running Debian (it’ll probably work on other distributions too)
  • Your service directory is in /service

Steps

Stop and disable currently running puppet(master)d (as root)

$ /etc/init.d/puppetd stop
$ /etc/init.d/puppetmasterd stop
$ update-rc.d -f  puppetd remove
update-rc.d: /etc/init.d/puppetd exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/puppetd ...
   /etc/rc0.d/K20puppetd
   /etc/rc1.d/K20puppetd
   /etc/rc2.d/S20puppetd
   /etc/rc3.d/S20puppetd
   /etc/rc4.d/S20puppetd
   /etc/rc5.d/S20puppetd
   /etc/rc6.d/K20puppetd
$ update-rc.d -f  puppetd remove
update-rc.d: /etc/init.d/puppetmasterd exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/puppetmasterd ...
   /etc/rc0.d/K20puppetmasterd
   /etc/rc1.d/K20puppetmasterd
   /etc/rc2.d/S20puppetmasterd
   /etc/rc3.d/S20puppetmasterd
   /etc/rc4.d/S20puppetmasterd
   /etc/rc5.d/S20puppetmasterd
   /etc/rc6.d/K20puppetmasterd

Create the directories to hold the service files

$ mkdir /etc/sv 
$ cd /etc/sv
$ mkdir puppetmasterd puppetd

Create the run files – note: if you have dash installed, you should substitue /bin/sh for /bin/dash

$ cat << _END_ > /etc/sv/puppetmasterd/run
#!/bin/sh
/usr/sbin/puppetmasterd -v
_END_

$ cat << _END_ > /etc/sv/puppetd/run
#!/bin/sh
/usr/sbin/puppetd -v
_END_

Create the log run files This is pending – need to check my log run files

Activate the service and check they are running

$ cd /service
$ ln -s /etc/puppetmasterd
$ ln -s /etc/puppetd
$ sleep 5
$ sv st puppet*

Need the output here

Congratulations, your puppet daemons are now properly monitored and running under runit!