Akosiaris has uploaded a new change for review.
https://gerrit.wikimedia.org/r/77720
Change subject: Refactor nrpe to a module
......................................................................
Refactor nrpe to a module
Turned the manifests into a module, added/cleaned up documentation, made
puppet-lint happy, moved/created templates and/or files. Added unit
tests. Still needs some love
Change-Id: I64a9f1d60cbabeef3a096981d634d7399d39bc45
---
D manifests/nrpe.pp
R modules/nrpe/files/check_dpkg
A modules/nrpe/manifests/check.pp
A modules/nrpe/manifests/init.pp
A modules/nrpe/manifests/monitor_service.pp
A modules/nrpe/manifests/packages.pp
A modules/nrpe/manifests/service.pp
A modules/nrpe/templates/check.erb
R modules/nrpe/templates/nrpe_local.cfg.erb
A modules/nrpe/tests/Makefile
A modules/nrpe/tests/check.pp
A modules/nrpe/tests/monitor_service.pp
A modules/nrpe/tests/nrpe.pp
A modules/nrpe/tests/packages.pp
A modules/nrpe/tests/service.pp
15 files changed, 222 insertions(+), 109 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/20/77720/1
diff --git a/manifests/nrpe.pp b/manifests/nrpe.pp
deleted file mode 100644
index 81b1b1d..0000000
--- a/manifests/nrpe.pp
+++ /dev/null
@@ -1,109 +0,0 @@
-# Definition: nrpe::check
-#
-# Installs a single NRPE check in /etc/nagios/nrpe.d/
-#
-# Arguments:
-# - $title
-# Name of the check, referenced by monitor_service and Nagios
check_command
-# e.g. check_varnishhtcpd
-# - $command
-# Command run by NRPE, e.g. "/usr/lib/nagios/plugins/check_procs -c 1:1
-C varnishtcpd"
-define nrpe::check($command) {
- Class[nrpe::packages] -> Nrpe::Check[$title]
-
- file { "/etc/nagios/nrpe.d/${title}.cfg":
- owner => root,
- group => root,
- mode => 0444,
- content => "command[${title}]=${command}\n",
- notify => Service["nagios-nrpe-server"]
- }
-}
-
-# Definition: nrpe::monitor_service
-#
-# Defines a Nagios check for a remote service over NRPE
-#
-# Also optionally installs a corresponding NRPE check file
-# using nrpe::check
-#
-# Parameters
-# $description - Service check description
-# $nrpe_command - if defined, installs this NRPE command as check_${title}
-# $contact_group
-# $retries
-# $ensure - Default: "present"
-#
-define nrpe::monitor_service(
- $description,
- $nrpe_command = undef,
- $contact_group = "admins",
- $retries = 3,
- $ensure = "present")
-{
- if $nrpe_command != undef {
- nrpe::check { "check_${title}":
- command => $nrpe_command,
- before => ::Monitor_service[$title]
- }
- }
- else {
- Nrpe::Check["check_${title}"] -> Nrpe::Monitor_service[$title]
- }
-
- ::monitor_service{ $title:
- description => $description,
- check_command => "nrpe_check!check_${title}",
- contact_group => $contact_group,
- retries => $retries,
- ensure => $ensure,
- }
-}
-
-class nrpe {
- include nrpe::packages
- include nrpe::service
-
- #Collect virtual NRPE nagios service checks
- Monitor_service <| tag == "nrpe" |>
-}
-class nrpe::packages {
- $nrpe_allowed_hosts = $::realm ? {
- "production" =>
"127.0.0.1,208.80.152.185,208.80.152.161,208.80.154.14",
- "labs" => "10.4.0.120"
- }
-
- package { [ "nagios-nrpe-server", "nagios-plugins",
"nagios-plugins-basic", "nagios-plugins-extra", "nagios-plugins-standard",
"libssl0.9.8" ]:
- ensure => present;
- }
-
- file { "/etc/nagios/nrpe_local.cfg":
- ensure => present,
- owner => root,
- group => root,
- mode => 0444,
- content => template("icinga/nrpe_local.cfg.erb"),
- require => Package[nagios-nrpe-server],
- }
-
- file { "/usr/lib/nagios/plugins/check_dpkg":
- ensure => present,
- owner => root,
- group => root,
- mode => 0555,
- source => "puppet:///files/icinga/check_dpkg",
- }
-}
-
-class nrpe::service {
- Class[nrpe::packages] -> Class[nrpe::service]
-
- service { 'nagios-nrpe-server':
- ensure => running,
- pattern => "/usr/sbin/nrpe",
- hasrestart => true,
- restart => "killall nrpe; sleep 2;
/etc/init.d/nagios-nrpe-server start",
- require => Package['nagios-nrpe-server'],
- subscribe => File['/etc/nagios/nrpe_local.cfg'],
- }
-}
diff --git a/files/icinga/check_dpkg b/modules/nrpe/files/check_dpkg
similarity index 100%
rename from files/icinga/check_dpkg
rename to modules/nrpe/files/check_dpkg
diff --git a/modules/nrpe/manifests/check.pp b/modules/nrpe/manifests/check.pp
new file mode 100644
index 0000000..20cf66b
--- /dev/null
+++ b/modules/nrpe/manifests/check.pp
@@ -0,0 +1,33 @@
+# Definition: nrpe::check
+#
+# Installs a single NRPE check in /etc/nagios/nrpe.d/
+#
+# Parameters:
+# $title (implicit parameter)
+# Name of the check, referenced by monitor_service and check_command
+# e.g. check_varnishhtcpd
+# $command
+# Command run by NRPE,
+# e.g. "/usr/lib/nagios/plugins/check_procs -c 1:1 -C varnishtcpd"
+# Actions:
+# Install a NRPE check definition in /etc/nagios/nrpe.d/
+#
+# Requires:
+# Class[nrpe::packages]
+#
+# Sample Usage:
+# nrpe::check { 'check_myprocess':
+# $command => '/usr/lib/nagios/plugins/check_procs -c 1:1 -C myprocess'
+# }
+
+define nrpe::check($command) {
+ Class[nrpe::packages] -> Nrpe::Check[$title]
+
+ file { "/etc/nagios/nrpe.d/${title}.cfg":
+ owner => root,
+ group => root,
+ mode => '0444',
+ content => template('nrpe/check.erb'),
+ notify => Service['nagios-nrpe-server']
+ }
+}
diff --git a/modules/nrpe/manifests/init.pp b/modules/nrpe/manifests/init.pp
new file mode 100644
index 0000000..022eda6
--- /dev/null
+++ b/modules/nrpe/manifests/init.pp
@@ -0,0 +1,27 @@
+# Class: nrpe
+#
+# This installes nrpe packages, ensures service in running and collects all
+# configuration
+#
+# Parameters:
+#
+# Actions:
+# Install nrpe packages
+# Manage nrpe service status
+# Collect all needed exported resources
+#
+# Requires:
+# Class[nrpe::packages]
+# Class[nrpe::service]
+# Define[monitor_service]
+#
+# Sample Usage:
+# include nrpe
+
+class nrpe {
+ include nrpe::packages
+ include nrpe::service
+
+ #Collect virtual NRPE nagios service checks
+ Monitor_service <| tag == 'nrpe' |>
+}
diff --git a/modules/nrpe/manifests/monitor_service.pp
b/modules/nrpe/manifests/monitor_service.pp
new file mode 100644
index 0000000..e2655fb
--- /dev/null
+++ b/modules/nrpe/manifests/monitor_service.pp
@@ -0,0 +1,45 @@
+# Definition: nrpe::monitor_service
+#
+# Defines a Nagios check for a remote service over NRPE
+#
+# Also optionally installs a corresponding NRPE check file
+# using nrpe::check
+#
+# Parameters
+# $description
+# Service check description
+# $nrpe_command
+# If defined, installs this NRPE command as check_${title}
+# $contact_group
+# Defaults to admins, the nagios contact groupo for the service
+# $retries
+# Defaults to 3. The number of times a service will be retried before
+# notifying
+# $ensure
+# Defaults to present
+#
+define nrpe::monitor_service(
+ $description,
+ $nrpe_command = undef,
+ $contact_group = 'admins',
+ $retries = 3,
+ $ensure = 'present') {
+ if $nrpe_command != undef {
+ nrpe::check { "check_${title}":
+ command => $nrpe_command,
+ before => ::Monitor_service[$title],
+ }
+ }
+ else {
+ # TODO: Figure out why this is here
+ Nrpe::Check["check_${title}"] -> Nrpe::Monitor_service[$title]
+ }
+
+ ::monitor_service{ $title:
+ ensure => $ensure,
+ description => $description,
+ check_command => "nrpe_check!check_${title}",
+ contact_group => $contact_group,
+ retries => $retries,
+ }
+}
diff --git a/modules/nrpe/manifests/packages.pp
b/modules/nrpe/manifests/packages.pp
new file mode 100644
index 0000000..0b0b2b8
--- /dev/null
+++ b/modules/nrpe/manifests/packages.pp
@@ -0,0 +1,50 @@
+# Class: nrpe::packages
+#
+# Install and configure nrpe package
+#
+# Parameters:
+#
+# Actions:
+# Install rnpe package
+# Configure nrpe
+#
+# Requires:
+#
+# Sample Usage:
+# include nrpe::packages
+
+class nrpe::packages {
+ # TODO: Parameterize this.
+ $nrpe_allowed_hosts = $::realm ? {
+ 'production' =>
'127.0.0.1,208.80.152.185,208.80.152.161,208.80.154.14',
+ 'labs' => '10.4.0.120',
+ default => '127.0.0.1',
+ }
+
+ package { [ 'nagios-nrpe-server',
+ 'nagios-plugins',
+ 'nagios-plugins-basic',
+ 'nagios-plugins-extra',
+ 'nagios-plugins-standard',
+ 'libssl0.9.8' ]:
+ ensure => present,
+ }
+
+ file { '/etc/nagios/nrpe_local.cfg':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0444',
+ content => template('nrpe/nrpe_local.cfg.erb'),
+ require => Package[nagios-nrpe-server],
+ }
+
+ # TODO: Move this somewhere else
+ file { '/usr/lib/nagios/plugins/check_dpkg':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0555',
+ source => 'puppet:///modules/nrpe/check_dpkg',
+ }
+}
diff --git a/modules/nrpe/manifests/service.pp
b/modules/nrpe/manifests/service.pp
new file mode 100644
index 0000000..a2f8c88
--- /dev/null
+++ b/modules/nrpe/manifests/service.pp
@@ -0,0 +1,29 @@
+# Class: nrpe::service
+#
+# Ensures service is running
+#
+# Parameters:
+#
+# Actions:
+# Ensure service is running
+#
+# Requires:
+# Class[nrpe::packages]
+#
+# Sample Usage:
+# include nrpe::service
+
+class nrpe::service {
+ Class[nrpe::packages] -> Class[nrpe::service]
+
+ # TODO: Clear the pattern, hasrestart, restart parameters because they are
+ # ugly
+ service { 'nagios-nrpe-server':
+ ensure => running,
+ pattern => '/usr/sbin/nrpe',
+ hasrestart => true,
+ restart => 'killall nrpe; sleep 2; /etc/init.d/nagios-nrpe-server
start',
+ require => Package['nagios-nrpe-server'],
+ subscribe => File['/etc/nagios/nrpe_local.cfg'],
+ }
+}
diff --git a/modules/nrpe/templates/check.erb b/modules/nrpe/templates/check.erb
new file mode 100644
index 0000000..b4a0c82
--- /dev/null
+++ b/modules/nrpe/templates/check.erb
@@ -0,0 +1,2 @@
+# File generated by puppet. DO NOT edit by hand
+command[<%= @title -%>]=<%= @command -%>
diff --git a/templates/icinga/nrpe_local.cfg.erb
b/modules/nrpe/templates/nrpe_local.cfg.erb
similarity index 100%
rename from templates/icinga/nrpe_local.cfg.erb
rename to modules/nrpe/templates/nrpe_local.cfg.erb
diff --git a/modules/nrpe/tests/Makefile b/modules/nrpe/tests/Makefile
new file mode 100644
index 0000000..76cd656
--- /dev/null
+++ b/modules/nrpe/tests/Makefile
@@ -0,0 +1,13 @@
+MANIFESTS=$(wildcard *.pp)
+OBJS=$(MANIFESTS:.pp=.po)
+TESTS_DIR=$(dir $(CURDIR))
+MODULE_DIR=$(TESTS_DIR:/=)
+MODULES_DIR=$(dir $(MODULE_DIR))
+
+all: test
+
+test: $(OBJS)
+
+%.po: %.pp
+ puppet parser validate $<
+ puppet apply --noop --modulepath $(MODULES_DIR) $<
diff --git a/modules/nrpe/tests/check.pp b/modules/nrpe/tests/check.pp
new file mode 100644
index 0000000..74517a1
--- /dev/null
+++ b/modules/nrpe/tests/check.pp
@@ -0,0 +1,8 @@
+#
+
+include nrpe::packages
+include nrpe::service
+
+nrpe::check { 'myproc':
+ command => 'mycommand',
+}
diff --git a/modules/nrpe/tests/monitor_service.pp
b/modules/nrpe/tests/monitor_service.pp
new file mode 100644
index 0000000..78f0738
--- /dev/null
+++ b/modules/nrpe/tests/monitor_service.pp
@@ -0,0 +1,5 @@
+#
+
+nrpe::monitor_service{ 'my_service':
+ description => 'my service monitored',
+}
diff --git a/modules/nrpe/tests/nrpe.pp b/modules/nrpe/tests/nrpe.pp
new file mode 100644
index 0000000..b12d6e0
--- /dev/null
+++ b/modules/nrpe/tests/nrpe.pp
@@ -0,0 +1,3 @@
+#
+
+include nrpe
diff --git a/modules/nrpe/tests/packages.pp b/modules/nrpe/tests/packages.pp
new file mode 100644
index 0000000..1f0930d
--- /dev/null
+++ b/modules/nrpe/tests/packages.pp
@@ -0,0 +1,3 @@
+#
+
+include nrpe::packages
diff --git a/modules/nrpe/tests/service.pp b/modules/nrpe/tests/service.pp
new file mode 100644
index 0000000..743ef24
--- /dev/null
+++ b/modules/nrpe/tests/service.pp
@@ -0,0 +1,4 @@
+#
+
+include nrpe::packages
+include nrpe::service
--
To view, visit https://gerrit.wikimedia.org/r/77720
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I64a9f1d60cbabeef3a096981d634d7399d39bc45
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Akosiaris <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits