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

Reply via email to