From 5dd85a7ee1b188de55f00dd107f3fa7ba2211fd8 Mon Sep 17 00:00:00 2001 From: Marius Hein <marius.hein@netways.de> Date: Fri, 9 May 2014 13:25:16 +0200 Subject: [PATCH] Vagrant: Add Icinga2 and test configuration refs #6127 --- .../files/etc/icinga2/conf.d/commands.conf | 48 ++ .../files/etc/icinga2/conf.d/test-config.conf | 681 ++++++++++++++++++ .../icinga2/features-available/ido-mysql.conf | 13 + .../icinga2/features-available/ido-pgsql.conf | 13 + .../modules/monitoring/instances.ini | 2 +- .../files/etc/icingaweb/resources.ini | 6 +- .vagrant-puppet/manifests/default.pp | 120 ++- 7 files changed, 868 insertions(+), 15 deletions(-) create mode 100644 .vagrant-puppet/files/etc/icinga2/conf.d/commands.conf create mode 100644 .vagrant-puppet/files/etc/icinga2/conf.d/test-config.conf create mode 100644 .vagrant-puppet/files/etc/icinga2/features-available/ido-mysql.conf create mode 100644 .vagrant-puppet/files/etc/icinga2/features-available/ido-pgsql.conf diff --git a/.vagrant-puppet/files/etc/icinga2/conf.d/commands.conf b/.vagrant-puppet/files/etc/icinga2/conf.d/commands.conf new file mode 100644 index 000000000..9000ac090 --- /dev/null +++ b/.vagrant-puppet/files/etc/icinga2/conf.d/commands.conf @@ -0,0 +1,48 @@ +/* Command objects */ + +object CheckCommand "kernel" { + import "plugin-check-command" + + command = [ "sudo", SysconfDir + "/icinga2/scripts/check_kernel" ] +} + +object NotificationCommand "mail-host-notification" { + import "plugin-notification-command" + + command = [ "/bin/true" ] + + env = { + "NOTIFICATIONTYPE" = "$notification.type$" + "HOSTALIAS" = "$host.display_name$", + "HOSTADDRESS" = "$address$", + "HOSTSTATE" = "$host.state$", + "LONGDATETIME" = "$icinga.long_date_time$", + "HOSTOUTPUT" = "$host.output$", + "NOTIFICATIONAUTHORNAME" = "$notification.author$", + "NOTIFICATIONCOMMENT" = "$notification.comment$", + "HOSTDISPLAYNAME" = "$host.display_name$", + "USEREMAIL" = "$user.email$" + } +} + +object NotificationCommand "mail-service-notification" { + import "plugin-notification-command" + + command = [ "/bin/true" ] + + env = { + "NOTIFICATIONTYPE" = "$notification.type$" + "SERVICEDESC" = "$service.name$" + "HOSTALIAS" = "$host.display_name$", + "HOSTADDRESS" = "$address$", + "SERVICESTATE" = "$service.state$", + "LONGDATETIME" = "$icinga.long_date_time$", + "SERVICEOUTPUT" = "$service.output$", + "NOTIFICATIONAUTHORNAME" = "$notification.author$", + "NOTIFICATIONCOMMENT" = "$notification.comment$", + "HOSTDISPLAYNAME" = "$host.display_name$", + "SERVICEDISPLAYNAME" = "$service.display_name$", + "USEREMAIL" = "$user.email$" + } +} + diff --git a/.vagrant-puppet/files/etc/icinga2/conf.d/test-config.conf b/.vagrant-puppet/files/etc/icinga2/conf.d/test-config.conf new file mode 100644 index 000000000..279f2ec1a --- /dev/null +++ b/.vagrant-puppet/files/etc/icinga2/conf.d/test-config.conf @@ -0,0 +1,681 @@ + +template CheckCommand "dummy-host-generic" { + import "plugin-check-command" + command = [ PluginDir + "/libexec/test_hostcheck.pl" ] + arguments = { + "--type" = "$check_type$" + "--failchance" = "$check_failchance$" + "--previous-state" = "$check_previous_state$" + "--state-duration" = "$check_state_duration$" + "--hostname" = "$check_hostname$" + } + + vars.check_type = "UP" + vars.check_failchance = "2%" + vars.check_previous_state = "$state$" + vars.check_state_duration = "$duration_sec$" + vars.check_hostname = "$name$" +} + +template CheckCommand "dummy-service-generic" { + import "plugin-check-command" + command = [ PluginDir + "/libexec/test_servicecheck.pl" ] + arguments = { + "--total-critical-on-host" = "$check_critical_on_host$" + "--total-warning-on-host" = "$check_warning_on_host$" + "--type" = "$check_type$" + "--failchance" = "$check_failchance$" + "--previous-state" = "$check_previous_state$" + "--state-duration" = "$check_state_duration$" + "--hostname" = "$check_hostname$" + "--servicedesc" = "$check_servicedesc$" + } + vars.check_critical_on_host = "$host.total_services_critical$" + vars.check_warning_on_host = "$host.total_services_warning$" + vars.check_type = "random" + vars.check_failchange = "5%" + vars.check_previous_state = "$service.state$" + vars.check_duration = "$service.duration_sec$" + vars.check_hostname = "$host.name$" + vars.check_servicedesc = "$service.name$" +} + +object CheckCommand "dummy-host" { + import "dummy-host-generic" +} + +object CheckCommand "dummy-service" { + import "dummy-service-generic" +} + +// Hostgroups + +object HostGroup "all-hosts" { + display_name = "All hosts on the system" + assign where true +} + +object HostGroup "all-ok" { + display_name = "All ok hosts" + assign where regex("^test-ok", host.name) +} + +object HostGroup "all-chaos" { + display_name = "All chaos hosts" + assign where regex("^test-chaos", host.name) +} + +object HostGroup "all-down" { + display_name = "All down hosts" + assign where regex("^test-down", host.name) +} + +object HostGroup "all-up" { + display_name = "All ok hosts" + assign where regex("^test-ok", host.name) +} + +object HostGroup "all-unreachable" { + display_name = "All ok hosts" + assign where regex("^test-unreachable", host.name) +} + +object HostGroup "all-pending" { + display_name = "All ok hosts" + assign where regex("^test-pending", host.name) +} + +// Servicegroups + +object ServiceGroup "service-ok" { + display_name = "All ok services" + assign where regex("^service-ok", service.name) +} + +object ServiceGroup "service-warning" { + display_name = "All warning services" + assign where regex("^service-warning", service.name) +} + +object ServiceGroup "service-critical" { + display_name = "All critical services" + assign where regex("^service-critical", service.name) +} + +object ServiceGroup "service-unknown" { + display_name = "All unknown services" + assign where regex("^service-unknown", service.name) +} + +object ServiceGroup "service-flapping" { + display_name = "All flapping services" + assign where regex("^service-flapping", service.name) +} + + +object ServiceGroup "service-pending" { + display_name = "All pending services" + assign where regex("^service-pending", service.name) +} + + +// --------------------------------------------------------------------------------------------------------------------- +// Services +// --------------------------------------------------------------------------------------------------------------------- + +apply Service "service-ok-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "ok" + assign where match("*ok*", host.vars.check_config) +} + +apply Service "service-ok-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "ok" + assign where match("*ok*", host.vars.check_config) +} + +apply Service "service-ok-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "ok" + assign where match("*ok*", host.vars.check_config) +} + +apply Service "service-warning-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "warning" + assign where match("*warning*", host.vars.check_config) +} + +apply Service "service-warning-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "warning" + assign where match("*warning*", host.vars.check_config) +} + +apply Service "service-warning-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "warning" + assign where match("*warning*", host.vars.check_config) +} + +apply Service "service-critical-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "critical" + assign where match("*critical*", host.vars.check_config) +} + +apply Service "service-critical-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "critical" + assign where match("*critical*", host.vars.check_config) +} + +apply Service "service-critical-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "critical" + assign where match("*critical*", host.vars.check_config) +} + +apply Service "service-flapping-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "flap" + assign where match("*flap*", host.vars.check_config) +} + +apply Service "service-flapping-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "flap" + assign where match("*flap*", host.vars.check_config) +} + +apply Service "service-flapping-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "flap" + assign where match("*flap*", host.vars.check_config) +} + +apply Service "service-chaos-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "random" + assign where match("*random*", host.vars.check_config) +} + +apply Service "service-chaos-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "random" + assign where match("*random*", host.vars.check_config) +} + +apply Service "service-chaos-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "random" + assign where match("*random*", host.vars.check_config) +} + +apply Service "service-unknown-001" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "unknown" + assign where match("*unknown*", host.vars.check_config) +} + +apply Service "service-unknown-002" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "unknown" + assign where match("*unknown*", host.vars.check_config) +} + +apply Service "service-unknown-003" { + import "generic-service" + check_command = "dummy-service" + vars.check_type = "unknown" + assign where match("*unknown*", host.vars.check_config) +} + +apply Service "service-pending-001" { + import "generic-service" + check_command = "dummy-service" + enable_active_checks = false + vars.check_type = "pending" + assign where match("*pending*", host.vars.check_config) +} + +apply Service "service-pending-002" { + import "generic-service" + check_command = "dummy-service" + enable_active_checks = false + vars.check_type = "unknown" + assign where match("*pending*", host.vars.check_config) +} + +apply Service "service-pending-003" { + import "generic-service" + check_command = "dummy-service" + enable_active_checks = false + vars.check_type = "pending" + assign where match("*pending*", host.vars.check_config) +} + + +// --------------------------------------------------------------------------------------------------------------------- +// Hosts +// --------------------------------------------------------------------------------------------------------------------- + +// OK + +object Host "test-ok-001" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-002" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-003" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-004" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-005" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-006" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-007" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-008" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-009" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +object Host "test-ok-010" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_config = "ok" +} + +// Chaotic + +object Host "test-chaos-001" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-002" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-003" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-004" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-005" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-006" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-007" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-008" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-009" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +object Host "test-chaos-010" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "random" + vars.check_config = "random,flap" +} + +// Down + +object Host "test-down-001" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-002" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-003" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-004" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-005" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-006" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-007" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-008" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-009" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +object Host "test-down-010" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "down" + vars.check_config = "warning,critical" +} + +// Unreachable + +object Host "test-unreachable-001" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-002" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-003" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-004" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-005" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-006" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-007" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-008" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-009" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +object Host "test-unreachable-010" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "unreachable" + vars.check_config = "unknown" +} + +// Pending + +object Host "test-pending-001" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-002" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-003" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-004" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-005" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-006" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-007" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-008" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-009" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +object Host "test-pending-010" { + import "generic-host" + address = "127.0.0.1" + check_command = "dummy-host" + vars.check_type = "pending" + vars.check_config = "pending" +} + +// EOF \ No newline at end of file diff --git a/.vagrant-puppet/files/etc/icinga2/features-available/ido-mysql.conf b/.vagrant-puppet/files/etc/icinga2/features-available/ido-mysql.conf new file mode 100644 index 000000000..3e278fe2d --- /dev/null +++ b/.vagrant-puppet/files/etc/icinga2/features-available/ido-mysql.conf @@ -0,0 +1,13 @@ +/** + * The db_ido_mysql library implements IDO functionality + * for MySQL. + */ + +library "db_ido_mysql" + +object IdoMysqlConnection "ido-mysql" { + user = "icinga2", + password = "icinga2", + host = "localhost", + database = "icinga2" +} diff --git a/.vagrant-puppet/files/etc/icinga2/features-available/ido-pgsql.conf b/.vagrant-puppet/files/etc/icinga2/features-available/ido-pgsql.conf new file mode 100644 index 000000000..e16cc6c3d --- /dev/null +++ b/.vagrant-puppet/files/etc/icinga2/features-available/ido-pgsql.conf @@ -0,0 +1,13 @@ +/** + * The db_ido_pgsql library implements IDO functionality + * for PostgreSQL. + */ + +library "db_ido_pgsql" + +object IdoPgsqlConnection "ido-pgsql" { + user = "icinga2", + password = "icinga2", + host = "localhost", + database = "icinga2" +} diff --git a/.vagrant-puppet/files/etc/icingaweb/modules/monitoring/instances.ini b/.vagrant-puppet/files/etc/icingaweb/modules/monitoring/instances.ini index 2f54e11e3..037baa8b9 100644 --- a/.vagrant-puppet/files/etc/icingaweb/modules/monitoring/instances.ini +++ b/.vagrant-puppet/files/etc/icingaweb/modules/monitoring/instances.ini @@ -1,2 +1,2 @@ [icinga] -path = "/usr/local/icinga-mysql/var/rw/icinga.cmd" +path = "/var/run/icinga2/cmd/icinga2.cmd" diff --git a/.vagrant-puppet/files/etc/icingaweb/resources.ini b/.vagrant-puppet/files/etc/icingaweb/resources.ini index 2ef51e921..3935906eb 100644 --- a/.vagrant-puppet/files/etc/icingaweb/resources.ini +++ b/.vagrant-puppet/files/etc/icingaweb/resources.ini @@ -12,9 +12,9 @@ type = db db = mysql host = localhost port = 3306 -password = icinga -username = icinga -dbname = icinga +password = icinga2 +username = icinga2 +dbname = icinga2 [statusdat] type = statusdat diff --git a/.vagrant-puppet/manifests/default.pp b/.vagrant-puppet/manifests/default.pp index 9c5666a89..526bdda2b 100644 --- a/.vagrant-puppet/manifests/default.pp +++ b/.vagrant-puppet/manifests/default.pp @@ -5,17 +5,25 @@ include openldap Exec { path => '/bin:/usr/bin:/sbin' } -$icingaVersion = '1.9.4' -$icinga2Version = '0.0.6' +$icingaVersion = '1.11.2' +$icinga2Version = '0.0.10' exec { 'create-mysql-icinga-db': unless => 'mysql -uicinga -picinga icinga', command => 'mysql -uroot -e "CREATE DATABASE icinga; \ - GRANT ALL ON icinga.* TO icinga@localhost \ + GRANT SELECT,INSERT,UPDATE,DELETE ON icinga.* TO icinga@localhost \ IDENTIFIED BY \'icinga\';"', require => Service['mysqld'] } +exec { 'create-mysql-icinga2-db': + unless => 'mysql -uicinga2 -picinga2 icinga2', + command => 'mysql -uroot -e "CREATE DATABASE icinga2; \ + GRANT SELECT,INSERT,UPDATE,DELETE ON icinga2.* to icinga2@localhost \ + IDENTIFIED BY \'icinga2\';"', + require => Service['mysqld'] +} + exec{ 'create-pgsql-icinga-db': unless => 'sudo -u postgres psql -tAc "SELECT 1 FROM pg_roles WHERE rolname=\'icinga\'" | grep -q 1', command => 'sudo -u postgres psql -c "CREATE ROLE icinga WITH LOGIN PASSWORD \'icingaweb\';" && \ @@ -40,6 +48,11 @@ group { 'icinga-cmd': ensure => present } +group { 'icingacmd': + ensure => present, + require => Exec['install icinga2'] +} + user { 'icinga': ensure => present, groups => 'icinga-cmd', @@ -47,8 +60,8 @@ user { 'icinga': } user { 'apache': - groups => ['icinga-cmd', 'vagrant'], - require => [ Class['apache'], Group['icinga-cmd'] ] + groups => ['icinga-cmd', 'vagrant', 'icingacmd'], + require => [ Class['apache'], Group['icinga-cmd'], Group['icingacmd'] ] } cmmi { 'icinga-mysql': @@ -104,7 +117,7 @@ file { '/etc/init.d/ido2db-pgsql': exec { 'populate-icinga-mysql-db': unless => 'mysql -uicinga -picinga icinga -e "SELECT * FROM icinga_dbversion;" &> /dev/null', - command => "mysql -uicinga -picinga icinga < /usr/local/src/icinga-mysql/icinga-${icingaVersion}/module/idoutils/db/mysql/mysql.sql", + command => "mysql -uroot icinga < /usr/local/src/icinga-mysql/icinga-${icingaVersion}/module/idoutils/db/mysql/mysql.sql", require => [ Cmmi['icinga-mysql'], Exec['create-mysql-icinga-db'] ] } @@ -330,7 +343,92 @@ package { ['cmake', 'boost-devel', 'bison', 'flex']: ensure => installed } -#cmmi { 'icinga2': +yumrepo { 'icinga2-repo': + baseurl => "http://packages.icinga.org/epel/6/release/", + enabled => '0', + gpgcheck => '1', + gpgkey => 'http://packages.icinga.org/icinga.key', + descr => "Icinga Repository - ${::architecture}" +} + +exec { 'install icinga2': + command => 'yum -d 0 -e 0 -y --enablerepo=icinga2-repo install icinga2', + unless => 'rpm -qa | grep icinga2', + require => Yumrepo['icinga2-repo'] +} + +exec { 'install icinga2-classicui-config': + command => 'yum -d 0 -e 0 -y --enablerepo=icinga2-repo install icinga2-classicui-config', + unless => 'rpm -qa | grep icinga2-classicui-config', + require => [ Yumrepo['icinga2-repo'], Exec['install icinga2'], Exec['install icinga2-ido-mysql'] ] +} + +exec { 'install icinga2-ido-mysql': + command => 'yum -d 0 -e 0 -y --enablerepo=icinga2-repo install icinga2-ido-mysql', + unless => 'rpm -qa | grep icinga2-ido-mysql', + require => [ Yumrepo['icinga2-repo'], Exec['install icinga2'] ], +} + +exec { 'install nagios-plugins-all': + command => 'yum -d 0 -e 0 -y --enablerepo=epel install nagios-plugins-all', + unless => 'rpm -qa | grep nagios-plugins-all', + require => [ Class['epel'], Exec['install icinga2'] ], +} + +file { '/etc/icinga2/features-enabled/': + ensure => directory, + owner => icinga, + group => icinga, + require => Exec['install icinga2-ido-mysql'] +} + +file { '/etc/icinga2/features-available/ido-mysql.conf': + source => 'puppet:////vagrant/.vagrant-puppet/files/etc/icinga2/features-available/ido-mysql.conf', + owner => 'icinga', + group => 'icinga', + require => Exec['install icinga2-ido-mysql'] +} + +file { '/etc/icinga2/features-enabled/ido-mysql.conf': + ensure => 'link', + target => '/etc/icinga2/features-available/ido-mysql.conf', + owner => 'root', + group => 'root', + require => Exec['install icinga2-ido-mysql'] +} + +file { '/etc/icinga2/conf.d/test-config.conf': + source => 'puppet:////vagrant/.vagrant-puppet/files/etc/icinga2/conf.d/test-config.conf', + owner => 'icinga', + group => 'icinga', + require => Exec['install icinga2'] +} + +file { '/etc/icinga2/conf.d/commands.conf': + source => 'puppet:////vagrant/.vagrant-puppet/files/etc/icinga2/conf.d/commands.conf', + owner => 'icinga', + group => 'icinga', + require => Exec['install icinga2'] +} + +service { 'icinga2': + ensure => running, + require => [ + Exec['install icinga2'], + File['/etc/icinga2/features-enabled/ido-mysql.conf'], + File['/etc/icinga2/conf.d/test-config.conf'], + File['/etc/icinga2/conf.d/commands.conf'] + ] +} + + +exec { 'populate-icinga2-mysql-db': + unless => 'mysql -uicinga2 -picinga2 icinga2 -e "SELECT * FROM icinga_dbversion;" &> /dev/null', + command => "mysql -uroot icinga2 < /usr/share/doc/icinga2-ido-mysql-$icinga2Version/schema/mysql.sql", + require => [ Exec['create-mysql-icinga2-db'], Exec['install icinga2-ido-mysql'] ] +} + +# cmmi { 'icinga2': # url => "https://github.com/Icinga/icinga2/releases/download/v${icinga2Version}/icinga2-${icinga2Version}.tar.gz", # output => "icinga2-${icinga2Version}.tar.gz", # configure_command => 'mkdir build &> /dev/null || true && cd build && sudo cmake ..', @@ -338,7 +436,7 @@ package { ['cmake', 'boost-devel', 'bison', 'flex']: # make => 'true && cd build/ && make && make install', # require => Package[ ['cmake', 'boost-devel', 'bison', 'flex'] ], # make_timeout => 900 -#} +# } #configure { 'icingaweb': # path => '/vagrant', @@ -699,6 +797,6 @@ file { '/etc/icingaweb/dashboard/dashboard.ini': group => 'apache', } -pear::package { 'deepend/Mockery': - channel => 'pear.survivethedeepend.com' -} +# pear::package { 'deepend/Mockery': +# channel => 'pear.survivethedeepend.com' +# }