I was trying to get puppet running out of the box on Fedora 19 and found a bug
exists in their systemd service file. After installing
puppet-server, whenever I tried to start the server with the following
systemctl start puppetmaster.service
It would hang for a long time and the following error message would show up in the log:
Jan 19 03:42:18 puppet-01 puppet-master: Starting Puppet master version 3.3.1 Jan 19 03:42:18 puppet-01 systemd: PID file /run/puppet/master.pid not readable (yet?) after start. Jan 19 03:43:07 puppet-01 systemd: puppetmaster.service operation timed out. Terminating. Jan 19 03:43:07 puppet-01 puppet-master: Could not run: can't be called from trap context
Starting puppet directly from the command line using the same command specified
in the service file would work fine, but that wasn't really a solution. Turns
out puppet, additionally I would briefly see the
puppetmaster service open up
port 8140 before systemd would kill it.
Turns out the systemd service script is looking in the wrong location for the
pid file. All of the pids are stored in
/var/run/puppet/ with a filename of
master.pid depending on the mode it was run as. The
systemd script, as the log indicates is looking for the pid files in
The real solution would be to bring this too the attention of the script
maintainers, but I haven't had a lot of luck going through those processes.
Instead you can work around the issue without any bureaucracy by changing the
rundir configuration option in
/run/puppet (with puppet as the user and group owning the
After that, voila! The service starts up. You'd think a QA process would catch that the service script doesn't work...