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 best solutions below

2
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
}