Puppet and AppFirst


I’ve been playing with AppFirst which is a new monitoring solution that describes itself as the “DevOps Dashboard”. Collectors are used on each host to gather data and you can also enable NRPE-style checks. As part of playing with the solution I’ve written a module that installs the required collector on Red Hat, Debian and Ubuntu platforms. The module also includes a type and provider to manage installing and maintaining the NRPE-style checks.

The code for the module is also on GitHub.

To use the module you’ll need:

  • Puppet 2.6.5 or later
  • An AppFirst account

For installation:

  1. Install puppet-appfirst as a module in your Puppet master’s module path.

To install the AppFirst collector declare the appfirst class.

class { 'appfirst':
  appfirst_id => '123456',

To use the type and provider:

  1. To use the appfirst_check type enable pluginsync on your master and clients in puppet.conf

    pluginsync = true
    pluginsync = true
  2. Run the Puppet client and sync the type and provider as a plugin

  3. You can then use the type and provider through the provided appfirst::check defined type like so:

    appfirst::check { "nameofcheck":
      command     => 'thecommandtobeexecuted',
      warning     => '10',
      critical    => '20',
      options     => 'optionalflags',

    The script specified in the title of the defined type, here nameofcheck, should be placed in the files directory of the appfirst module.

    Or you can use it via the type and provider itself:

    appfirst_check { 'check_name':
      ensure   => present,
      command  => 'yourcommand',
      options  => 'optionalflags',
      warning  => '10',
      critical => '20',