Merge "Allow to configure snmpd_config" into stable/newton

This commit is contained in:
Jenkins 2017-10-11 00:43:42 +00:00 committed by Gerrit Code Review
commit 301a4f366f
4 changed files with 132 additions and 12 deletions

View File

@ -40,3 +40,8 @@ mod 'systemd',
mod 'ssh',
:git => 'https://github.com/saz/puppet-ssh',
:ref => 'v3.0.1'
mod 'snmp',
:git => 'https://github.com/razorsedge/puppet-snmp',
:ref => 'master'

View File

@ -18,6 +18,20 @@
#
# === Parameters
#
# [*snmpd_config*]
# An array of snmp config.
# Example:
# snmpd_config:
# - 'createUser ro_snmp_user MD5 "secrete"',
# - 'rouser ro_snmp_user'
# - 'proc neutron-server'
# - 'proc nova-api'
# Note: since we give total freedom to configure snmpd_config and don't
# verify the content, the user will have to ensure that the parameters
# related to user / password in the array, are the same given to
# THT via SnmpdReadonlyUserName and SnmpdReadonlyUserPassword.
# Defaults to undef.
#
# [*snmpd_password*]
# The SNMP password
# Defaults to hiera('snmpd_readonly_user_password')
@ -32,6 +46,7 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::snmp (
$snmpd_config = undef,
$snmpd_password = hiera('snmpd_readonly_user_password'),
$snmpd_user = hiera('snmpd_readonly_user_name'),
$step = hiera('step'),
@ -41,18 +56,24 @@ class tripleo::profile::base::snmp (
authtype => 'MD5',
authpass => $snmpd_password,
}
class { '::snmp':
agentaddress => ['udp:161','udp6:[::1]:161'],
snmpd_config => [ join(['createUser ', $snmpd_user, ' MD5 "', $snmpd_password, '"']),
join(['rouser ', $snmpd_user]),
'proc cron',
'includeAllDisks 10%',
'master agentx',
'trapsink localhost public',
'iquerySecName internalUser',
'rouser internalUser',
'defaultMonitors yes',
'linkUpDownNotifications yes' ],
if $snmpd_config {
validate_array($snmpd_config)
class { '::snmp':
snmpd_config => $snmpd_config,
}
} else {
class { '::snmp':
snmpd_config => [ join(['createUser ', $snmpd_user, ' MD5 "', $snmpd_password, '"']),
join(['rouser ', $snmpd_user]),
'proc cron',
'includeAllDisks 10%',
'master agentx',
'trapsink localhost public',
'iquerySecName internalUser',
'rouser internalUser',
'defaultMonitors yes',
'linkUpDownNotifications yes' ],
}
}
}
}

View File

@ -0,0 +1,11 @@
---
features:
- |
Expose a new Puppet parameter to snmp profile, ``snmpd_config`` which
is an array definded to undef by default.
It can be used to override all snmpd configuration for advanced
deployments.
If used, all parameters have to be configured included users and
passwords, which should be the same as given to snmpd_password
and snmpd_user. There is no logic that will verify the content
of ``snmpd_config``.

View File

@ -0,0 +1,83 @@
#
# Copyright (C) 2017 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
require 'spec_helper'
describe 'tripleo::profile::base::snmp' do
shared_examples_for 'tripleo::profile::base::snmp' do
context 'with default configuration' do
let :params do
{
:snmpd_user => 'ro_snmp_user',
:snmpd_password => 'secrete',
:step => 4,
}
end
it 'should configure snmpd' do
is_expected.to contain_class('snmp').with(
:snmpd_config => [
'createUser ro_snmp_user MD5 "secrete"',
'rouser ro_snmp_user',
'proc cron',
'includeAllDisks 10%',
'master agentx',
'trapsink localhost public',
'iquerySecName internalUser',
'rouser internalUser',
'defaultMonitors yes',
'linkUpDownNotifications yes',
]
)
end
end
context 'with snmpd_config setting' do
let :params do
{
:snmpd_user => 'ro_snmp_user',
:snmpd_password => 'secrete',
:snmpd_config => [
'createUser ro_snmp_user MD5 "secrete"',
'rouser ro_snmp_user',
'proc neutron-server',
],
:step => 4,
}
end
it 'should configure snmpd with custom parameters' do
is_expected.to contain_class('snmp').with(
:snmpd_config => [
'createUser ro_snmp_user MD5 "secrete"',
'rouser ro_snmp_user',
'proc neutron-server',
]
)
end
end
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) {
facts
}
it_behaves_like 'tripleo::profile::base::snmp'
end
end
end