Showing with 347 additions and 73 deletions.
  1. +1 −1 .fixtures.yml
  2. +42 −0 .metadata.json
  3. +18 −11 .travis.yml
  4. +2 −2 Modulefile
  5. +9 −0 README.md
  6. +51 −11 manifests/init.pp
  7. +85 −45 manifests/params.pp
  8. +25 −0 spec/classes/snmp_client_spec.rb
  9. +104 −0 spec/classes/snmp_init_spec.rb
  10. +10 −3 templates/snmpd.conf.erb
2 changes: 1 addition & 1 deletion .fixtures.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
fixtures:
repositories:
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git"
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
symlinks:
snmp: "#{source_dir}"
42 changes: 42 additions & 0 deletions .metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"operatingsystem_support": [
{
"operatingsystem": "RedHat",
"operatingsystemrelease": [ "5", "6" ]
},
{
"operatingsystem": "CentOS",
"operatingsystemrelease": [ "5", "6" ]
},
{
"operatingsystem": "OracleLinux",
"operatingsystemrelease": [ "5", "6" ]
},
{
"operatingsystem": "FreeBSD",
"operatingsystemrelease": [ "9.2", "10.0" ]
},
{
"operatingsystem": "SLES",
"operatingsystemrelease": [ "11 SP1" ]
},
{
"operatingsystem": "Debian",
"operatingsystemrelease": [ "6", "7" ]
},
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [ "12.04" ]
}
],
"requirements": [
{
"name": "pe",
"version_requirement": "3.x"
},
{
"name": "puppet",
"version_requirement": ">=2.7.20 <4.0.0"
}
]
}
29 changes: 18 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,36 @@ rvm:
- 1.8.7
- 1.9.3
- 2.0.0
- 2.1.0
env:
matrix:
- PUPPET_GEM_VERSION="~> 2.6.0"
- PUPPET_GEM_VERSION="~> 2.7.0"
- PUPPET_GEM_VERSION="~> 3.0.0"
- PUPPET_GEM_VERSION="~> 3.1.0"
- PUPPET_GEM_VERSION="~> 3.2.0"
- PUPPET_GEM_VERSION="~> 3.3.0"
- PUPPET_GEM_VERSION="~> 3.4.0"
- PUPPET_GEM_VERSION="~> 3.5.0"
- PUPPET_GEM_VERSION="~> 3.6.0"
# https://docs.puppetlabs.com/guides/platforms.html#ruby-versions
matrix:
exclude:
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="~> 2.6.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 2.6.0"
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="~> 2.7.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 2.7.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.1.0"
- rvm: 2.1.0
env: PUPPET_GEM_VERSION="~> 2.7.0"
- rvm: 1.8.7
env: PUPPET_GEM_VERSION="~> 3.2.0"
- rvm: 1.8.7
env: PUPPET_GEM_VERSION="~> 3.3.0"
- rvm: 1.8.7
env: PUPPET_GEM_VERSION="~> 3.4.0"
- rvm: 2.1.0
env: PUPPET_GEM_VERSION="~> 3.2.0"
- rvm: 2.1.0
env: PUPPET_GEM_VERSION="~> 3.3.0"
- rvm: 2.1.0
env: PUPPET_GEM_VERSION="~> 3.4.0"
notifications:
email:
- github@razorsedge.org
4 changes: 2 additions & 2 deletions Modulefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name 'razorsedge-snmp'
version '3.0.0'
version '3.1.0'

author 'razorsedge'
license 'Apache License, Version 2.0'
project_page 'https://github.com/razorsedge/puppet-snmp'
source 'git://github.com/razorsedge/puppet-snmp.git'
source 'https://github.com/razorsedge/puppet-snmp.git'
summary 'Install and manage Net-SNMP services.'
description 'This module manages the installation of the SNMP server, SNMP
client, and SNMP trap server. It also can create a SNMPv3 user with
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ OS Support:
* RedHat family - tested on CentOS 5.9 and CentOS 6.4
* SuSE family - tested on SLES 11 SP1
* Debian family - tested on Ubuntu 12.04.2 LTS, Debian 6.0.7, and Debian 7.0
* FreeBSD family - tested on FreeBSD 9.2-RELEASE, FreeBSD 10.0-RELEASE

Class documentation is available via puppetdoc.

Expand Down Expand Up @@ -73,6 +74,9 @@ To install a SNMP version 3 user for snmpd:
authpass => '1234auth',
privpass => '5678priv',
}
class { 'snmp':
snmpd_config => [ 'rouser myuser authPriv' ],
}

To install a SNMP version 3 user for snmptrapd:

Expand Down Expand Up @@ -116,6 +120,11 @@ The classes `snmp::server` and `snmp::trapd` will be merged into class `snmp` in
version 3.0.0 of this module. All of their class parameters will be made
available in the `snmp` class.

Contributing
------------

Please see DEVELOP.md for contribution information.

License
-------

Expand Down
62 changes: 51 additions & 11 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,19 @@
# Location of the SNMP system.
# Default: Unknown
#
# [*com2sec*]
# An array of VACM com2sec mappings.
# Must provide SECNAME, SOURCE and COMMUNITY.
# See http://www.net-snmp.org/docs/man/snmpd.conf.html#lbAL for details.
# Default: [ "notConfigUser default ${ro_community}" ]
#
# [*groups*]
# An array of VACM group mappings.
# Must provide GROUP, {v1|v2c|usm|tsm|ksm}, SECNAME.
# See http://www.net-snmp.org/docs/man/snmpd.conf.html#lbAL for details.
# Default: [ 'notConfigGroup v1 notConfigUser',
# 'notConfigGroup v2c notConfigUser' ]
#
# [*services*]
# For a host system, a good value is 72 (application + end-to-end layers).
# Default: 72
Expand Down Expand Up @@ -214,6 +227,9 @@
$rw_network = $snmp::params::rw_network,
$contact = $snmp::params::contact,
$location = $snmp::params::location,
$services = $snmp::params::services,
$com2sec = $snmp::params::com2sec,
$groups = $snmp::params::groups,
$views = $snmp::params::views,
$accesses = $snmp::params::accesses,
$dlmod = $snmp::params::dlmod,
Expand Down Expand Up @@ -344,33 +360,45 @@
require => Package['snmpd'],
}

if $::osfamily == 'FreeBSD' {
file { $snmp::params::service_config_dir_path:
ensure => 'directory',
mode => $snmp::params::service_dir_perms,
owner => $snmp::params::service_dir_owner,
group => $snmp::params::service_dir_group,
require => Package['snmpd'],
}
}

file { 'snmpd.conf':
ensure => $file_ensure,
mode => $snmp::params::service_config_perms,
owner => 'root',
group => 'root',
group => $snmp::params::service_config_dir_group,
path => $snmp::params::service_config,
content => template('snmp/snmpd.conf.erb'),
require => Package['snmpd'],
notify => Service['snmpd'],
}

file { 'snmpd.sysconfig':
ensure => $file_ensure,
mode => '0644',
owner => 'root',
group => 'root',
path => $snmp::params::sysconfig,
content => template("snmp/snmpd.sysconfig-${::osfamily}.erb"),
require => Package['snmpd'],
notify => Service['snmpd'],
if $::osfamily != 'FreeBSD' {
file { 'snmpd.sysconfig':
ensure => $file_ensure,
mode => '0644',
owner => 'root',
group => 'root',
path => $snmp::params::sysconfig,
content => template("snmp/snmpd.sysconfig-${::osfamily}.erb"),
require => Package['snmpd'],
notify => Service['snmpd'],
}
}

file { 'snmptrapd.conf':
ensure => $file_ensure,
mode => $snmp::params::service_config_perms,
owner => 'root',
group => 'root',
group => $snmp::params::service_config_dir_group,
path => $snmp::params::trap_service_config,
content => template('snmp/snmptrapd.conf.erb'),
require => Package['snmpd'],
Expand Down Expand Up @@ -416,6 +444,18 @@
Exec['install /etc/init.d/snmptrapd'],
],
}
} elsif $::osfamily == 'FreeBSD' {
service { 'snmptrapd':
ensure => $trap_service_ensure_real,
name => $trap_service_name,
enable => $trap_service_enable_real,
hasstatus => $trap_service_hasstatus,
hasrestart => $trap_service_hasrestart,
require => [
Package['snmpd'],
File['var-net-snmp'],
],
}
}

service { 'snmpd':
Expand Down
130 changes: 85 additions & 45 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,21 @@
default => $::snmp_location,
}

$com2sec = $::snmp_com2sec ? {
undef => [
"notConfigUser default ${ro_community}",
],
default => $::snmp_com2sec,
}

$groups = $::snmp_groups ? {
undef => [
'notConfigGroup v1 notConfigUser',
'notConfigGroup v2c notConfigUser',
],
default => $::snmp_groups,
}

$services = $::snmp_services ? {
undef => 72,
default => $::snmp_services,
Expand Down Expand Up @@ -244,55 +259,80 @@
$snmptrapd_options = '-Lsd -p /var/run/snmptrapd.pid'
}
}
$package_name = 'net-snmp'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0644'
$service_name = 'snmpd'
$varnetsnmp_owner = 'root'
$varnetsnmp_group = 'root'

$client_package_name = 'net-snmp-utils'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$trap_service_name = 'snmptrapd'
$package_name = 'net-snmp'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0644'
$service_config_dir_group = 'root'
$service_name = 'snmpd'
$varnetsnmp_owner = 'root'
$varnetsnmp_group = 'root'

$client_package_name = 'net-snmp-utils'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$trap_service_name = 'snmptrapd'
}
'Debian': {
$package_name = 'snmpd'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0600'
$service_name = 'snmpd'
$snmpd_options = '-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
$sysconfig = '/etc/default/snmpd'
$var_net_snmp = '/var/lib/snmp'
$varnetsnmp_perms = '0755'
$varnetsnmp_owner = 'snmp'
$varnetsnmp_group = 'snmp'

$client_package_name = 'snmp'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$snmptrapd_options = '-Lsd -p /var/run/snmptrapd.pid'
$package_name = 'snmpd'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0600'
$service_config_dir_group = 'root'
$service_name = 'snmpd'
$snmpd_options = '-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
$sysconfig = '/etc/default/snmpd'
$var_net_snmp = '/var/lib/snmp'
$varnetsnmp_perms = '0755'
$varnetsnmp_owner = 'snmp'
$varnetsnmp_group = 'snmp'

$client_package_name = 'snmp'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$snmptrapd_options = '-Lsd -p /var/run/snmptrapd.pid'
}
'Suse': {
$package_name = 'net-snmp'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0600'
$service_name = 'snmpd'
$snmpd_options = 'd'
$sysconfig = '/etc/sysconfig/net-snmp'
$var_net_snmp = '/var/lib/net-snmp'
$varnetsnmp_perms = '0755'
$varnetsnmp_owner = 'root'
$varnetsnmp_group = 'root'

$client_package_name = 'net-snmp'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$trap_service_name = 'snmptrapd'
$snmptrapd_options = ''
$package_name = 'net-snmp'
$service_config = '/etc/snmp/snmpd.conf'
$service_config_perms = '0600'
$service_config_dir_group = 'root'
$service_name = 'snmpd'
$snmpd_options = 'd'
$sysconfig = '/etc/sysconfig/net-snmp'
$var_net_snmp = '/var/lib/net-snmp'
$varnetsnmp_perms = '0755'
$varnetsnmp_owner = 'root'
$varnetsnmp_group = 'root'

$client_package_name = 'net-snmp'
$client_config = '/etc/snmp/snmp.conf'

$trap_service_config = '/etc/snmp/snmptrapd.conf'
$trap_service_name = 'snmptrapd'
$snmptrapd_options = ''
}
'FreeBSD': {
$package_name = 'net-mgmt/net-snmp'
$service_config_dir_path = '/usr/local/etc/snmp'
$service_config_dir_perms = '0755'
$service_config_dir_owner = 'root'
$service_config_dir_group = 'wheel'
$service_config = '/usr/local/etc/snmp/snmpd.conf'
$service_config_perms = '0755'
$service_name = 'snmpd'
$snmpd_options = 'd'
$var_net_snmp = '/var/net-snmp'
$varnetsnmp_perms = '0600'
$varnetsnmp_owner = 'root'
$varnetsnmp_group = 'wheel'

$client_package_name = 'net-mgmt/net-snmp'
$client_config = '/usr/local/etc/snmp/snmp.conf'

$trap_service_config = '/usr/local/etc/snmp/snmptrapd.conf'
$trap_service_name = 'snmptrapd'
$snmptrapd_options = ''
}
default: {
fail("Module ${::module} is not supported on ${::operatingsystem}")
Expand Down
Loading