Puppet; Call another .pp

1.6k views Asked by At

So I am using the https://forge.puppetlabs.com/pdxcat/nrpe module to try to figure out automation of NRPE across hosts.

One of the available usages is

nrpe::command {
    'check_users':
      ensure  => present,
      command => 'check_users -w 5 -c 10';
}

Is there anyway to make a "group" of these commands and have them called on specific nodes?

For example:

you have 5 different nrpe:command each defining a different check, and then call those specific checks?

I am basically trying to figure out if I could group certain checks/commands together instead of setting up a ton of text in the main sites.pp file. This would also allow for customized templates/configurations across numerous nodes.

Thanks!

EDIT: This is the command and what it's supposed to do when called on with the 'check_users' portion. If I could have a class with a set of "nrpe:command" and just call on that class THROUGH the module, it should work. Sorry, though. Still new at puppet. Thanks again.

define nrpe::command (
  $command,
  $ensure       = present,
  $include_dir  = $nrpe::params::nrpe_include_dir,
  $libdir       = $nrpe::params::libdir,
  $package_name = $nrpe::params::nrpe_packages,
  $service_name = $nrpe::params::nrpe_service,
  $file_group   = $nrpe::params::nrpe_files_group,
) {

  file { "${include_dir}/${title}.cfg":
    ensure  => $ensure,
    content => template('nrpe/command.cfg.erb'),
    owner   => root,
    group   => $file_group,
    mode    => '0644',
    require => Package[$package_name],
    notify  => Service[$service_name],
  }

}
1

There are 1 answers

2
Loïc Basset On

What version are you talking about? In puppet latest versions, inheritance is deprecated, then you shouldn't use it.

The easiest way would be to use "baselines".

Assuming you are using a manifests directory (manifest = $confdir/manifests inside your puppet.conf), simply create a $confdir/manifests/minimal.pp (or $confdir/manifests/nrpe_config.pp or whatever class name you want to use) with the content below:

class minimal {
  nrpe::command { 'check_users':
    ensure  => present,
    command => 'check_users -w 5 -c 10',
  }
}

Then just call this class inside your node definitions (let's say in $confdir/manifests/my_node.pp) :

node 'my_node.foo.bar' {
  include minimal
}