Faidon Liambotis has submitted this change and it was merged.

Change subject: netops: abstract monitoring checks into a define
......................................................................


netops: abstract monitoring checks into a define

netops::monitoring hasn't been very DRY, which makes things like adding
checks (or even reading the code) a PITA. Abstract the monitoring
definitions into a netops::check define and call create_resources from
the main class.

Change-Id: Ica471beda4fdf0134b5af027d857fe4961a70ca8
---
A modules/netops/manifests/check.pp
M modules/netops/manifests/monitoring.pp
2 files changed, 87 insertions(+), 273 deletions(-)

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



diff --git a/modules/netops/manifests/check.pp 
b/modules/netops/manifests/check.pp
new file mode 100644
index 0000000..f1207f7
--- /dev/null
+++ b/modules/netops/manifests/check.pp
@@ -0,0 +1,57 @@
+# == Define: netops::check
+#
+# Sets up various monitoring checks for a given networking device.
+#
+# === Parameters
+#
+# [*snmp_community*]
+#   The SNMP community to use to poll the device.
+#
+# [*ipv4*]
+#   The IPv4 address of the device. Optional.
+#
+# [*interfaces*]
+#   Whether to perform interface status checks. Defaults to false.
+#
+# [*bgp*]
+#   Whether to perform BGP checks. Defaults to false.
+#
+# === Examples
+#
+#  netops::check { 'cr1-esams':
+#      ipv4 => '91.198.174.245',
+#      bgp  => true,
+#  }
+
+define netops::check(
+    $snmp_community,
+    $ipv4=undef,
+    $bgp=false,
+    $interfaces=false,
+) {
+
+    if $ipv4 {
+        @monitoring::host { $title:
+            ip_address => $ipv4,
+            group      => 'routers',
+        }
+    }
+
+    if $interfaces {
+        @monitoring::service { "${title} interfaces":
+            host          => $title,
+            group         => 'routers',
+            description   => 'Router interfaces',
+            check_command => "check_ifstatus_nomon!${snmp_community}",
+        }
+    }
+
+    if $bgp {
+        @monitoring::service { "${title} BGP status":
+            host          => $title,
+            group         => 'routers',
+            description   => 'BGP status',
+            check_command => "check_bgp!${snmp_community}",
+        }
+    }
+}
diff --git a/modules/netops/manifests/monitoring.pp 
b/modules/netops/manifests/monitoring.pp
index abc141c..b1f912f 100644
--- a/modules/netops/manifests/monitoring.pp
+++ b/modules/netops/manifests/monitoring.pp
@@ -9,281 +9,38 @@
 #  include netops::monitoring
 
 class netops::monitoring {
-
     include passwords::network
-    $snmp_ro_community = $passwords::network::snmp_ro_community
 
-    ### esams ###
-
-    # cr1-esams
-    @monitoring::host { 'cr1-esams':
-        ip_address => '91.198.174.245',
-        group      => 'routers',
+    $defaults = {
+        snmp_community => $passwords::network::snmp_ro_community,
+        interfaces     => true,
     }
-    @monitoring::service { 'cr1-esams interfaces':
-        host          => 'cr1-esams',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
+    $routers = {
+        # eqiad
+        'cr1-eqiad'     => { ipv4 => '208.80.154.196',  bgp => true, },
+        'cr2-eqiad'     => { ipv4 => '208.80.154.197',  bgp => true, },
+        'mr1-eqiad'     => { ipv4 => '208.80.154.199',  },
+        'mr1-eqiad.oob' => { ipv4 => '198.32.107.153',  },
+        # eqord
+        'cr1-eqord'     => { ipv4 => '208.80.154.198',  bgp => true, },
+        # codfw
+        'cr1-codfw'     => { ipv4 => '208.80.153.192',  bgp => true, },
+        'cr2-codfw'     => { ipv4 => '208.80.153.193',  bgp => true, },
+        'mr1-codfw'     => { ipv4 => '208.80.153.196',  },
+        'mr1-codfw.oob' => { ipv4 => '216.117.46.36',   },
+        # eqdfw
+        'cr1-eqdfw'     => { ipv4 => '208.80.153.198',  bgp => true, },
+        # esams
+        'cr1-esams'     => { ipv4 => '91.198.174.245',  bgp => true, },
+        'cr2-esams'     => { ipv4 => '91.198.174.244',  bgp => true, },
+        'cr2-knams'     => { ipv4 => '91.198.174.246',  bgp => true, },
+        'mr1-esams'     => { ipv4 => '91.198.174.247',  },
+        'mr1-esams.oob' => { ipv4 => '164.138.24.90',   },
+        # ulsfo
+        'cr1-ulsfo'     => { ipv4 => '198.35.26.192',   bgp => true, },
+        'cr2-ulsfo'     => { ipv4 => '198.35.26.193',   bgp => true, },
+        'mr1-ulsfo'     => { ipv4 => '198.35.26.194',   },
+        'mr1-ulsfo.oob' => { ipv4 => '209.237.234.242', },
     }
-    @monitoring::service { 'cr1-esams bgp status':
-        host          => 'cr1-esams',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # cr2-esams
-    @monitoring::host { 'cr2-esams':
-        ip_address => '91.198.174.244',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr2-esams interfaces':
-        host          => 'cr2-esams',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr2-esams bgp status':
-        host          => 'cr2-esams',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # cr2-knams
-    @monitoring::host { 'cr2-knams':
-        ip_address => '91.198.174.246',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr2-knams interfaces':
-        host          => 'cr2-knams',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr2-knams bgp status':
-        host          => 'cr2-knams',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # mr1-esams
-    @monitoring::host { 'mr1-esams':
-        ip_address => '91.198.174.247',
-        group      => 'routers'
-    }
-    @monitoring::service { 'mr1-esams interfaces':
-        host          => 'mr1-esams',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::host { 'mr1-esams.oob':
-        host_fqdn => 'mr1-esams.oob.wikimedia.org',
-        group     => 'routers'
-    }
-
-    ### eqiad ###
-
-    # cr1-eqiad
-    @monitoring::host { 'cr1-eqiad':
-        ip_address => '208.80.154.196',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr1-eqiad interfaces':
-        host          => 'cr1-eqiad',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr1-eqiad bgp status':
-        host          => 'cr1-eqiad',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # cr2-eqiad
-    @monitoring::host { 'cr2-eqiad':
-        ip_address => '208.80.154.197',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr2-eqiad interfaces':
-        host          => 'cr2-eqiad',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr2-eqiad bgp status':
-        host          => 'cr2-eqiad',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # mr1-eqiad
-    @monitoring::host { 'mr1-eqiad':
-        ip_address => '208.80.154.199',
-        group      => 'routers',
-    }
-    @monitoring::service { 'mr1-eqiad interfaces':
-        host          => 'mr1-eqiad',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::host { 'mr1-eqiad.oob':
-        host_fqdn => 'mr1-eqiad.oob.wikimedia.org',
-        group     => 'routers'
-    }
-
-    ### eqord ###
-
-    # cr1-eqord
-    @monitoring::host { 'cr1-eqord':
-        ip_address => '208.80.154.198',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr1-eqord interfaces':
-        host          => 'cr1-eqord',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr1-eqord bgp status':
-        host          => 'cr1-eqord',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    ### ulsfo ###
-
-    # cr1-ulsfo
-    @monitoring::host { 'cr1-ulsfo':
-        ip_address => '198.35.26.192',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr1-ulsfo interfaces':
-        host          => 'cr1-ulsfo',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr1-ulsfo bgp status':
-        host          => 'cr1-ulsfo',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # cr2-ulsfo
-    @monitoring::host { 'cr2-ulsfo':
-        ip_address => '198.35.26.193',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr2-ulsfo interfaces':
-        host          => 'cr2-ulsfo',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr2-ulsfo bgp status':
-        host          => 'cr2-ulsfo',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # mr1-ulsfo
-    @monitoring::host { 'mr1-ulsfo':
-        ip_address => '198.35.26.194',
-        group      => 'routers',
-    }
-    @monitoring::service { 'mr1-ulsfo interfaces':
-        host          => 'mr1-ulsfo',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::host { 'mr1-ulsfo.oob':
-        host_fqdn => 'mr1-ulsfo.oob.wikimedia.org',
-        group     => 'routers'
-    }
-
-    ### codfw ###
-
-    # cr1-codfw
-    @monitoring::host { 'cr1-codfw':
-        ip_address => '208.80.153.192',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr1-codfw interfaces':
-        host          => 'cr1-codfw',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr1-codfw bgp status':
-        host          => 'cr1-codfw',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # cr2-codfw
-    @monitoring::host { 'cr2-codfw':
-        ip_address => '208.80.153.193',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr2-codfw interfaces':
-        host          => 'cr2-codfw',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr2-codfw bgp status':
-        host          => 'cr2-codfw',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
-
-    # mr1-codfw
-    @monitoring::host { 'mr1-codfw':
-        ip_address => '208.80.153.196',
-        group      => 'routers',
-    }
-    @monitoring::service { 'mr1-codfw interfaces':
-        host          => 'mr1-codfw',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::host { 'mr1-codfw.oob':
-        host_fqdn => 'mr1-codfw.oob.wikimedia.org',
-        group     => 'routers'
-    }
-
-    ### eqdfw ###
-
-    # cr1-eqdfw
-    @monitoring::host { 'cr1-eqdfw':
-        ip_address => '208.80.153.198',
-        group      => 'routers',
-    }
-    @monitoring::service { 'cr1-eqdfw interfaces':
-        host          => 'cr1-eqdfw',
-        group         => 'routers',
-        description   => 'Router interfaces',
-        check_command => "check_ifstatus_nomon!${snmp_ro_community}",
-    }
-    @monitoring::service { 'cr1-eqdfw bgp status':
-        host          => 'cr1-eqdfw',
-        group         => 'routers',
-        description   => 'BGP status',
-        check_command => "check_bgp!${snmp_ro_community}",
-    }
+    create_resources(netops::check, $routers, $defaults)
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/281466
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ica471beda4fdf0134b5af027d857fe4961a70ca8
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Faidon Liambotis <[email protected]>
Gerrit-Reviewer: Faidon Liambotis <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to