Heute steht der Blog um des Icinga Puppet-Modul ganz im Zeichen der Icinga-2-Features. Features lassen sich entweder über die main class aktivieren und via Hiera parametrisieren oder dediziert mittels einer eigenen Klasse deklarieren.
include ::mysql::server include ::icinga2 mysql::db { 'icinga': user => 'icinga', password => 'secret', host => 'localhost', grant => ['SELECT', 'INSERT', 'UPDATE', 'DELETE', 'DROP', 'CREATE VIEW', 'CREATE', 'INDEX', 'EXECUTE', 'ALTER'], before => Class['::icinga2'] }
Da die Klasse icinga2 auch über einen Parameter features verfügt über den die angegeben Features aktiviert werden, kann auch dieser Parameter nach Hiera ausgelagert werden. Nachfolgend wird für die MySQL-IDO-Anbindung das Passwort gesetzt und veranlasst, dass erstmalig das DB-Schema importiert wird. Alle anderen Parameter für das Feature idomysql, sowie alle für mainlog und checker sind die entsprechenden Default-Werte.
--- icinga2::features: - checker - notification - mainlog - idomysql icinga2::feature::idomysql::password: secret icinga2::feature::idomysql::import_schema: true
Das selbe erreicht man ebenfalls unter Verwendung der direkten Deklaration:
class { '::icinga2::feature::idomysql': password => 'secret', import_schema => true, }
Etwas anders verhält es sich, wenn man die Feature checker, notification oder mainlog explizit deklarieren möchte. Da diese die standardmäßig aktivierten Features sind, muss das entsprechende Feature vorher deaktiviert werden bzw. nur die anderen im Parameter features angegeben werden:
class { '::icinga2': features => [ 'checker', 'notification' ], } class { '::icinga2::feature::mainlog': severity => 'notice', }
Der Weg über die Konfiguration über Hiera ist da doch wirklich eleganter. Die Deklaration ist übersichtlich
include ::icinga2
und auch in Hiera ist nicht viel zu hinterlegen:
--- icinga2::feature::manilog::severity: notice