Faidon Liambotis has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/364753 )
Change subject: (WIP): Add SNMP classes ...................................................................... (WIP): Add SNMP classes Add an snmp class and, more importantly, and snmp::mibs::source define that can use snmp-mibs-downloader to fetch third-party MIBs. Populate the Juniper MIBs in a new snmp::mibs class. Change-Id: Id34099a3abe8e97cc8fbd023ce810e8658c7f7cf --- A modules/snmp/files/juniper-mibs A modules/snmp/manifests/init.pp A modules/snmp/manifests/mibs.pp A modules/snmp/manifests/mibs/source.pp A modules/snmp/templates/mib.conf.erb 5 files changed, 229 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/53/364753/1 diff --git a/modules/snmp/files/juniper-mibs b/modules/snmp/files/juniper-mibs new file mode 100644 index 0000000..2b1e68f --- /dev/null +++ b/modules/snmp/files/juniper-mibs @@ -0,0 +1,156 @@ +# Up to date as of 16.1R3.10 +# +# Generate this list with: +# for mib in *; do +# new=$(sed -nr 's/\s*(.*) DEFINITIONS.*/\1/p' $mib); +# old=$(echo $mib |sed 's/^mib-//;s/\.txt$//'); +# echo $old $new; +# done | column -t | sort +jnx-alarm JUNIPER-ALARM-EXT-MIB +jnx-analyzer JUNIPER-ANALYZER-MIB +jnx-atm-cos JUNIPER-ATM-COS-MIB +jnx-atm JUNIPER-ATM-MIB +jnx-bfd-exp BFD-STD-MIB +jnx-bfd JUNIPER-BFD-MIB +jnx-bgpmib2 BGP4-V2-MIB-JUNIPER +jnx-bl JNX-OPT-IF-EXT-MIB +jnx-cfgmgmt JUNIPER-CFGMGMT-MIB +jnx-chas-defines JUNIPER-CHASSIS-DEFINES-MIB +jnx-chassis-alarm JUNIPER-ALARM-MIB +jnx-chassis-fwdd JUNIPER-CHASSIS-FWDD-MIB +jnx-chassis JUNIPER-MIB +jnx-coll JUNIPER-COLLECTOR-MIB +jnx-cos JUNIPER-COS-MIB +jnx-dcu JUNIPER-DCU-MIB +jnx-dfc JUNIPER-DFC-MIB +jnx-dom JUNIPER-DOM-MIB +jnx-dot3oam-capability JNX-DOT3OAM-CAPABILITY +jnx-event JUNIPER-EVENT-MIB +jnx-ex-mac-notification JUNIPER-EX-MAC-NOTIFICATION-MIB +jnx-exp JUNIPER-EXPERIMENT-MIB +jnx-ex-smi JUNIPER-EX-SMI +jnx-fabric-chassis JUNIPER-FABRIC-CHASSIS +jnx-fabric JUNIPER-FABRIC-MIB +jnx-firewall JUNIPER-FIREWALL-MIB +jnx-fru JUNIPER-FRU-MIB +jnx-gen-set JUNIPER-SNMP-SET-MIB +jnx-hostresources JUNIPER-HOSTRESOURCES-MIB +jnx-if-accounting JUNIPER-IF-ACCOUNTING-MIB +jnx-if-capability JNX-IF-CAPABILITY +jnx-if-extensions JUNIPER-IF-MIB +jnx-ifotn JUNIPER-IFOTN-MIB +jnx-ip-capability JNX-IP-CAPABILITY +jnx-ipforward JUNIPER-IPFORWARD-MIB +jnx-ipmcast-capability IPMCAST-MIB-CAPABILITY +jnx-ipsec-flow-mon JUNIPER-IPSEC-FLOW-MON-MIB +jnx-ipsec-monitor-asp JNX-IPSEC-MONITOR-MIB +jnx-ipv4 JUNIPER-IPv4-MIB +jnx-ipv6 JUNIPER-IPv6-MIB +jnx-jdhcp JUNIPER-JDHCP-MIB +jnx-jdhcpv6 JUNIPER-JDHCPV6-MIB +jnx-js-auth JUNIPER-JS-AUTH-MIB +jnx-js-cert JUNIPER-JS-CERT-MIB +jnx-js-dns JUNIPER-JS-DNS-MIB +jnx-js-idp JUNIPER-JS-IDP-MIB +jnx-js-if-ext JUNIPER-JS-IF-EXT-MIB +jnx-js-ipsec-vpn JUNIPER-JS-IPSEC-VPN-MIB +jnx-js-nat JUNIPER-JS-NAT-MIB +jnx-js-packet-mirror JUNIPER-JS-PACKET-MIRROR-MIB +jnx-js-policy JUNIPER-JS-POLICY-MIB +jnx-jsrpd JUNIPER-CHASSIS-CLUSTER-MIB +jnx-js-screening JUNIPER-JS-SCREENING-MIB +jnx-js-smi JUNIPER-JS-SMI +jnx-js-spu-monitoring JUNIPER-SRX5000-SPU-MONITORING-MIB +jnx-js-utm-av JUNIPER-JS-UTM-AV-MIB +jnx-jvae-infra JUNIPER-JVAE-INFRA-MIB +jnx-jvae-node JUNIPER-JVAE-NODE-MIB +jnx-l2ald JUNIPER-L2ALD-MIB +jnx-l2cp-features JUNIPER-L2CP-FEATURES-MIB +jnx-l2tp JNX-L2TP-MIB +jnx-ldp JUNIPER-LDP-MIB +jnx-license JUNIPER-LICENSE-MIB +jnx-lsys-securityprofile JUNIPER-LSYS-SECURITYPROFILE-MIB +jnx-lsys-sp-authentry JUNIPER-LSYSSPAUTHENTRY-MIB +jnx-lsys-sp-cpu JUNIPER-LSYSSP-CPU-MIB +jnx-lsys-sp-flowgate JUNIPER-LSYSSP-FLOWGATE-MIB +jnx-lsys-sp-flowsess JUNIPER-LSYSSP-FLOWSESS-MIB +jnx-lsys-sp-natconebind JUNIPER-LSYSSP-NATCONEBIND-MIB +jnx-lsys-sp-natdstpool JUNIPER-LSYSSP-NATDSTPOOL-MIB +jnx-lsys-sp-natdstrule JUNIPER-LSYSSP-NATDSTRULE-MIB +jnx-lsys-sp-natpoipnum JUNIPER-LSYSSP-NATPOIPNUM-MIB +jnx-lsys-sp-natsrcnopatad JUNIPER-LSYSSP-NATSRCNOPATAD-MIB +jnx-lsys-sp-natsrcpatad JUNIPER-LSYSSP-NATSRCPATAD-MIB +jnx-lsys-sp-natsrcpool JUNIPER-LSYSSP-NATSRCPOOL-MIB +jnx-lsys-sp-natsrcrule JUNIPER-LSYSSP-NATSRCRULE-MIB +jnx-lsys-sp-natstaticrule JUNIPER-LSYSSP-NATSTATICRULE-MIB +jnx-lsys-sp-policy JUNIPER-LSYSSP-POLICY-MIB +jnx-lsys-sp-policywcnt JUNIPER-LSYSSP-POLICYWCNT-MIB +jnx-lsys-sp-scheduler JUNIPER-LSYSSP-SCHEDULER-MIB +jnx-lsys-sp-zone JUNIPER-LSYSSP-ZONE-MIB +jnx-mac JUNIPER-MAC-MIB +jnx-mag JUNIPER-MAG-MIB +jnx-mbg-smi JUNIPER-MBG-SMI +jnx-mimstp JUNIPER-MIMSTP-MIB +jnx-mobile-gateway-aaa JUNIPER-MOBILE-GATEWAY-AAA-MIB +jnx-mobile-gateway-appfw JUNIPER-MOBILE-GATEWAY-SM-MIB +jnx-mobile-gateway-charging JUNIPER-MOBILITY-CHARGING-MIB +jnx-mobile-gateway-dhcp JUNIPER-MOBILE-GATEWAY-DHCP-MIB +jnx-mobile-gateway-example JUNIPER-MOBILE-GATEWAY-EXAMPLE-MIB +jnx-mobile-gateway-gtp JUNIPER-MOBILE-GATEWAY-GTP-MIB +jnx-mobile-gateway-rmps JUNIPER-MOBILE-GATEWAY-RMPS-MIB +jnx-mobile-gateway-sgw-charging JUNIPER-MOBILITY-SGW-CHARGING-MIB +jnx-mobile-gateway-sgw-gtp JUNIPER-MOBILE-GATEWAY-SGW-GTP-MIB +jnx-mobile-gateway-sgw-mfwd JUNIPER-MOBILE-GW-SGW-MFWD-MIB +jnx-mobile-gateway-sgw-sm JUNIPER-MOBILE-GATEWAY-SGW-SM-MIB +jnx-mobile-gateways JUNIPER-MOBILE-GATEWAYS +jnx-mobile-gateway-sm-ip-pool JUNIPER-MOBILE-GATEWAY-SM-IP-POOL-MIB +jnx-mpls-ldp JUNIPER-MPLS-LDP-MIB +jnx-mpls MPLS-MIB +jnx-optics JUNIPER-IFOPTICS-MIB +jnx-optif JNX-OPT-IF-MIB +jnx-ospfv3mib OSPFV3-MIB-JUNIPER +jnx-otn JUNIPER-OTN-MIB +jnx-p2mp JNX-MPLS-TE-P2MP-STD-MIB +jnx-pae-extension JUNIPER-PAE-EXTENSION-MIB +jnx-pfe JUNIPER-PFE-MIB +jnx-ping JUNIPER-PING-MIB +jnx-pmon JUNIPER-PMon-MIB +jnx-power-supply-unit JUNIPER-POWER-SUPPLY-UNIT-MIB +jnx-ppp JNX-PPP-MIB +jnx-pppoe JNX-PPPOE-MIB +jnx-pwatm JUNIPER-PW-ATM-MIB +jnx-pwtdm JUNIPER-PW-TDM-MIB +jnx-rmon JUNIPER-RMON-MIB +jnx-rpf JUNIPER-RPF-MIB +jnx-rpm JUNIPER-RPM-MIB +jnx-rpm-twamp JUNIPER-TWAMP-MIB +jnx-rps JUNIPER-RPS-MIB +jnx-rsvp JUNIPER-RSVP-MIB +jnx-rtm JUNIPER-RTM-MIB +jnx-scu JUNIPER-SCU-MIB +jnx-secure-access-port JUNIPER-SECURE-ACCESS-PORT-MIB +jnx-services JUNIPER-Services-MIB +jnx-sipcommon JUNIPER-SIP-COMMON-MIB +jnx-smi JUNIPER-SMI +jnx-snmpv2-capability JNX-SNMPv2-CAPABILITY +jnx-soam-pm JUNIPER-SOAM-PM-MIB +jnx-sonetaps APS-MIB +jnx-sonet JUNIPER-SONET-MIB +jnx-sp JUNIPER-SP-MIB +jnx-sp-nat JUNIPER-NAT-MIB +jnx-srd JUNIPER-SRD-MIB +jnx-subscriber JUNIPER-SUBSCRIBER-MIB +jnx-syslog JUNIPER-SYSLOG-MIB +jnx-timing-notifications JUNIPER-TIMING-NOTFNS-MIB +jnx-tlb JUNIPER-TLB-MIB +jnx-traceroute JUNIPER-TRACEROUTE-MIB +jnx-user-aaa JUNIPER-USER-AAA-MIB +jnx-util JUNIPER-UTIL-MIB +jnx-virtualchassis JUNIPER-VIRTUALCHASSIS-MIB +jnx-vlan JUNIPER-VLAN-MIB +jnx-vmon JUNIPER-VMON-MIB +jnx-vpls-bgp VPLS-BGP-DRAFT-01-MIB +jnx-vpls-generic VPLS-GENERIC-DRAFT-01-MIB +jnx-vpls-ldp VPLS-LDP-DRAFT-01-MIB +jnx-vpn JUNIPER-VPN-MIB +rfc3813-capability MPLS-LSR-STD-CAPABILITY diff --git a/modules/snmp/manifests/init.pp b/modules/snmp/manifests/init.pp new file mode 100644 index 0000000..e6e3463 --- /dev/null +++ b/modules/snmp/manifests/init.pp @@ -0,0 +1,6 @@ +# +class snmp { + package { 'snmp': + ensure => present, + } +} diff --git a/modules/snmp/manifests/mibs.pp b/modules/snmp/manifests/mibs.pp new file mode 100644 index 0000000..15d41c7 --- /dev/null +++ b/modules/snmp/manifests/mibs.pp @@ -0,0 +1,16 @@ +# +class snmp::mibs { + package { 'snmp-mibs-downloader': + ensure => present, + } + + snmp::mibs::source { 'juniper': + source => 'http://www.juniper.net/techpubs/software/junos/junos161/juniper-mibs-16.1R3.10.tgz', + list => 'puppet:///modules/snmp/juniper-mibs', + options => { + 'PREFIX' => 'JuniperMibs/mib-', + 'SUFFIX' => '.txt', + }, + } + +} diff --git a/modules/snmp/manifests/mibs/source.pp b/modules/snmp/manifests/mibs/source.pp new file mode 100644 index 0000000..257ad64 --- /dev/null +++ b/modules/snmp/manifests/mibs/source.pp @@ -0,0 +1,43 @@ +# +define snmp::mibs::source( + $source, + $list, + $options={}, +) { + + $listname = "${title}list" + + # while Net-SNMP would be equally happy if we set this to $title, libsmi + # isn't as smart and traverses directories non-recursively. We could either + # modify /etc/smi.conf's path, or hardcode all of our sources to "site" but + # making cleanup a little more difficult. This define doesn't support + # ensure absent anyway, so do that for now. + $destdir = 'site' + + file { "/etc/snmp-mibs-downloader/${title}.conf": + ensure => present, + mode => '0444', + owner => 'root', + group => 'root', + content => template('snmp/mib.conf.erb'), + require => Package['snmp-mibs-downloader'], + notify => Exec["download-mibs ${title}"], + } + + file { "/etc/snmp-mibs-downloader/${listname}": + ensure => present, + mode => '0444', + owner => 'root', + group => 'root', + source => $list, + require => Package['snmp-mibs-downloader'], + notify => Exec["download-mibs ${title}"], + } + + exec { "download-mibs ${title}": + path => '/usr/sbin:/usr/bin:/sbin:/bin', + require => Package['snmp-mibs-downloader'], + refreshonly => true, + } + +} diff --git a/modules/snmp/templates/mib.conf.erb b/modules/snmp/templates/mib.conf.erb new file mode 100644 index 0000000..b85105d --- /dev/null +++ b/modules/snmp/templates/mib.conf.erb @@ -0,0 +1,8 @@ +HOST=<%= @source.sub(/^(.+)\/([^\/]+)$/, '\1') %> +ARCHIVE=<%= @source.sub(/^(.+)\/([^\/]+)$/, '\2') %> +ARCHTYPE=<%= @source.sub(/.+\.(tar|tgz|zip)$/, '\1') %> +CONF=<%= @listname %> +DEST=<%= @destdir %> +<%- @options.sort.each do |key, value| -%> +<%= key %>=<%= value %> +<%- end -%> -- To view, visit https://gerrit.wikimedia.org/r/364753 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id34099a3abe8e97cc8fbd023ce810e8658c7f7cf Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Faidon Liambotis <fai...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits