Install Icinga server with puppet over foreman?


After a least successful try to install Icinga directly on ubuntu I rethought my requierements and decided to do it the managed way with puppet. I have now a running puppet master and I wanted to install an Icinga2 server including Icingaweb2 and director over foreman. I created an external Postgresql server and installed the IDO feature with the manual and also created an icinga database plus user. I also installed these modules on the puppet master server:

I then added the host to puppet and assigned these Puppet classes and the overrid the values below:

The ticket_salt is an incomplete task (and I don’t have a clue at the moment how to manage this). Beside that Icingaweb2 is accessible but it is not configured until now:

With these settings, puppet tells me this on the host:

root@raspberrypi:/home/pi# puppet agent -t
Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Warning: Found multiple default providers for service: init, systemd; using init
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Missing title. The title expression resulted in undef (file: /etc/puppetlabs/code/environments/production/modules/icinga/manifests/ido.pp, line: 83, column: 15) on node
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

This error message confuses me. I’ve looked into the ido.pp. At line 83 this is writte

    package { $ido_package_name:
      ensure => installed,
      before => Class["icinga2::feature::ido${db_type}"],

So it seems that $ido_package_name is missing.

Some lines before this is stated:

    $ido_package_name = $db_type ? {
      'mysql' => $::icinga2::globals::ido_mysql_package_name,
      'pgsql' => $::icinga2::globals::ido_pgsql_package_name,

So I thought that db_type in icinga::ido is the problem. But I defined that in the parameters.
How should I continue? I’m a little bit lost at the moment…


So does anybody know how to do that? Is there any guide for this? Is unclear to me which classes I should include and how they should be configured. I think that’s Icinga-knowledge (the less puppet knowledge).

Can anybody perhaps share hers/his configuration?

Thanks, Christoph

Nobody? Is there a better place to ask?
Normally I would say no. But this forum seems to be not very responsive :expressionless:

Hi Christoph,

I suspect it is due to the order in which the classes are processed. If icinga::ido is declared before icinga::server, variable $::icinga2::globals::ido_pgsql_package_name is undefined and so is the title in line 83.
A meaningful error message is missing here, I’ll include that.

My recommendation is also to use Foreman only as ENC for roles, without parametrization and do everything else in Hiera and related profile and role classes. See The roles and profiles method.

The classes from the icinga/icinga module are in principle already such profile classes.


Hmm. I’m still trying to get that working. But it seems to be not straightforward.

Is there a guide for setup Icinga over Foreman?