Akosiaris has submitted this change and it was merged.

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. Also update site.pp/base.pp to not explicitly load nrpe.pp
Still needs some love but this will work for starters. Rspec tests have
also been added, but fail at this point

Change-Id: I64a9f1d60cbabeef3a096981d634d7399d39bc45
---
M manifests/base.pp
D manifests/nrpe.pp
M manifests/site.pp
A modules/nrpe/Rakefile
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/spec/classes/nrpe_spec.rb
A modules/nrpe/spec/classes/packages_spec.rb
A modules/nrpe/spec/classes/service_spec.rb
A modules/nrpe/spec/defines/check_spec.rb
A modules/nrpe/spec/defines/monitor_service_spec.rb
A modules/nrpe/spec/fixtures/manifests/site.pp
A modules/nrpe/spec/fixtures/modules/nrpe/files
A modules/nrpe/spec/fixtures/modules/nrpe/manifests
A modules/nrpe/spec/fixtures/modules/nrpe/templates
A modules/nrpe/spec/spec_helper.rb
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
28 files changed, 294 insertions(+), 111 deletions(-)

Approvals:
  Akosiaris: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/manifests/base.pp b/manifests/base.pp
index 791fbd3..66b4ad7 100644
--- a/manifests/base.pp
+++ b/manifests/base.pp
@@ -5,7 +5,6 @@
 import "ssh.pp"
 import "sudo.pp"
 import "nagios.pp"
-import "nrpe.pp"
 
 # /var/run has moved to /run in newer Ubuntu versions.
 # See: http://lwn.net/Articles/436012/
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/manifests/site.pp b/manifests/site.pp
index bb8bf6b..b6c6633 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -25,7 +25,6 @@
 import "nagios.pp"
 import "network.pp"
 import "nfs.pp"
-import "nrpe.pp"
 import "openstack.pp"
 import "poolcounter.pp"
 import "puppetmaster.pp"
diff --git a/modules/nrpe/Rakefile b/modules/nrpe/Rakefile
new file mode 100644
index 0000000..e6443dc
--- /dev/null
+++ b/modules/nrpe/Rakefile
@@ -0,0 +1,7 @@
+require 'rake'
+
+require 'rspec/core/rake_task'
+
+RSpec::Core::RakeTask.new(:spec) do |t|
+  t.pattern = 'spec/*/*_spec.rb'
+end
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/spec/classes/nrpe_spec.rb 
b/modules/nrpe/spec/classes/nrpe_spec.rb
new file mode 100644
index 0000000..469a495
--- /dev/null
+++ b/modules/nrpe/spec/classes/nrpe_spec.rb
@@ -0,0 +1,6 @@
+require 'spec_helper'
+
+describe 'nrpe', :type => :class do
+    it { should include_class('nrpe::packages') }
+    it { should include_class('nrpe::service') }
+end
diff --git a/modules/nrpe/spec/classes/packages_spec.rb 
b/modules/nrpe/spec/classes/packages_spec.rb
new file mode 100644
index 0000000..6c9fa02
--- /dev/null
+++ b/modules/nrpe/spec/classes/packages_spec.rb
@@ -0,0 +1,13 @@
+require 'spec_helper'
+
+describe 'nrpe::packages', :type => :class do
+    let(:facts) { { :realm => 'production' } }
+    it { should contain_package('nagios-nrpe-server') }
+    it { should contain_package('nagios-plugins') }
+    it { should contain_package('nagios-plugins-basic') }
+    it { should contain_package('nagios-plugins-extra') }
+    it { should contain_package('nagios-plugins-standard') }
+    it { should contain_package('libssl0.9.8') }
+    it { should contain_file('/etc/nagios/nrpe_local.cfg') }
+    it { should contain_file('/usr/lib/nagios/plugins/check_dpkg') }
+end
diff --git a/modules/nrpe/spec/classes/service_spec.rb 
b/modules/nrpe/spec/classes/service_spec.rb
new file mode 100644
index 0000000..e56d804
--- /dev/null
+++ b/modules/nrpe/spec/classes/service_spec.rb
@@ -0,0 +1,5 @@
+require 'spec_helper'
+
+describe 'nrpe::service', :type => :class do
+    it { should contain_service('nagios-nrpe-server') }
+end
diff --git a/modules/nrpe/spec/defines/check_spec.rb 
b/modules/nrpe/spec/defines/check_spec.rb
new file mode 100644
index 0000000..6bcdee1
--- /dev/null
+++ b/modules/nrpe/spec/defines/check_spec.rb
@@ -0,0 +1,10 @@
+require 'spec_helper'
+
+describe 'nrpe::check', :type => :define do
+    let(:title) { 'something' }
+    let(:params) { { :command => '/usr/local/bin/mycommand -i this -o that' } }
+
+    it do
+       should contain_file('/etc/nagios/nrpe.d/something.cfg')
+    end
+end
diff --git a/modules/nrpe/spec/defines/monitor_service_spec.rb 
b/modules/nrpe/spec/defines/monitor_service_spec.rb
new file mode 100644
index 0000000..932cba2
--- /dev/null
+++ b/modules/nrpe/spec/defines/monitor_service_spec.rb
@@ -0,0 +1,20 @@
+require 'spec_helper'
+
+describe 'nrpe::monitor_service', :type => :define do
+    let(:title) { 'something' }
+    let(:params) { {
+           :description   => 'this is a description',
+           :contact_group => 'noone',
+    } }
+    #let(:params) { { :command => '/usr/local/bin/mycommand -i this -o that' } 
}
+
+    it do
+       should contain_monitor_service('something').with(
+           :description   => 'this is a description',
+           :contact_group => 'noone',
+           :retries       => 3,
+           :ensure        => 'present',
+           :check_command => 'nrpe!check_something'
+       )
+    end
+end
diff --git a/modules/nrpe/spec/fixtures/manifests/site.pp 
b/modules/nrpe/spec/fixtures/manifests/site.pp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/nrpe/spec/fixtures/manifests/site.pp
diff --git a/modules/nrpe/spec/fixtures/modules/nrpe/files 
b/modules/nrpe/spec/fixtures/modules/nrpe/files
new file mode 120000
index 0000000..84dafe8
--- /dev/null
+++ b/modules/nrpe/spec/fixtures/modules/nrpe/files
@@ -0,0 +1 @@
+../../../../files
\ No newline at end of file
diff --git a/modules/nrpe/spec/fixtures/modules/nrpe/manifests 
b/modules/nrpe/spec/fixtures/modules/nrpe/manifests
new file mode 120000
index 0000000..373b992
--- /dev/null
+++ b/modules/nrpe/spec/fixtures/modules/nrpe/manifests
@@ -0,0 +1 @@
+../../../../manifests
\ No newline at end of file
diff --git a/modules/nrpe/spec/fixtures/modules/nrpe/templates 
b/modules/nrpe/spec/fixtures/modules/nrpe/templates
new file mode 120000
index 0000000..f8a06d1
--- /dev/null
+++ b/modules/nrpe/spec/fixtures/modules/nrpe/templates
@@ -0,0 +1 @@
+../../../../templates
\ No newline at end of file
diff --git a/modules/nrpe/spec/spec_helper.rb b/modules/nrpe/spec/spec_helper.rb
new file mode 100644
index 0000000..d3923f8
--- /dev/null
+++ b/modules/nrpe/spec/spec_helper.rb
@@ -0,0 +1,8 @@
+require 'rspec-puppet'
+
+fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))
+
+RSpec.configure do |c|
+  c.module_path = File.join(fixture_path, 'modules')
+  c.manifest_dir = File.join(fixture_path, 'manifests')
+end
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: merged
Gerrit-Change-Id: I64a9f1d60cbabeef3a096981d634d7399d39bc45
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Akosiaris <[email protected]>
Gerrit-Reviewer: Akosiaris <[email protected]>
Gerrit-Reviewer: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Lcarr <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to