Puppet 2.7 Cookbook
上QQ阅读APP看书,第一时间看更新

Detecting compilation errors

"My mechanic told me, 'I couldn't repair your brakes, so I made your horn louder.'"—Steven Wright

Usually, when there's a problem, we'll want to stop and fix it before continuing. However, when running in daemon mode, Puppet will ignore any compilation errors in the manifest and just apply the last known working version from its cache. This behavior is governed by the usecacheonfailure config setting, and its default setting, true:

# puppet --genconfig |grep usecacheonfailure
 # usecacheonfailure = true

It's worth noting that when you apply manifests by hand using puppet agent --test, this doesn't happen: Puppet will complain and refuse to do anything if there is an error in the manifest. That's because the --test switch is shorthand for the following options:

# puppet agent --onetime --verbose --ignorecache --no-daemonize --no-usecacheonfailure

Because usecacheonfailure is on when Puppet runs as a daemon, sometimes you won't notice mistakes in a manifest for a while, as Puppet keeps on silently running an old version of the manifest instead of complaining.

How to do it…

If you want to change this behavior, set the following value in puppet.conf:

usecacheonfailure = false

How it works…

With this option set, Puppet will immediately complain about errors and refuse to run until they are corrected.