180 lines
5.6 KiB
Ruby
180 lines
5.6 KiB
Ruby
#
|
|
# Cookbook Name:: zabbix
|
|
# Spec:: agent
|
|
#
|
|
# Copyright (c) 2015 Mobiquity Inc, All Rights Reserved.
|
|
|
|
require 'spec_helper'
|
|
|
|
describe 'zabbix::agent' do
|
|
context 'When all zabbix tags are enabled, on RHEL/CentOS' do
|
|
let(:chef_run) do
|
|
ChefSpec::SoloRunner.new do |node|
|
|
# Create a new environment (you could also use a different :let block or :before block)
|
|
env = Chef::Environment.new
|
|
env.name 'unit_test_env'
|
|
|
|
# Stub the node to return this environment
|
|
allow(node).to receive(:chef_environment).and_return(env.name)
|
|
|
|
# Stub any calls to Environment.load to return this environment
|
|
allow(Chef::Environment).to receive(:load).and_return(env)
|
|
|
|
# Stubbing out fqdn node attribute
|
|
node.automatic['fqdn'] = 'unit.testing.stub'
|
|
node.normal['tags'] = [ 'httpd', 'openldap', 'mongodb', 'shibboleth', 'tomcat' ]
|
|
end.converge(described_recipe)
|
|
end
|
|
|
|
before do
|
|
allow(Chef::EncryptedDataBagItem).to receive(:load).with('odhp_credentials', 'credentials').and_return(
|
|
{
|
|
'mongo' => {
|
|
'users' => {
|
|
'unit_test_env' => {
|
|
'mmsagent' => {
|
|
'username' => 'unit_test_username',
|
|
'password' => 'unit_test_password'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
end
|
|
|
|
let(:zabbix_agent_template) { chef_run.template('/etc/zabbix/zabbix_agentd.conf') }
|
|
|
|
it 'installs zabbix packages' do
|
|
%w{zabbix-agent zabbix-sender}.each do |pkg|
|
|
expect(chef_run).to install_yum_package(pkg)
|
|
.with(
|
|
version: '3.0.5-1.el6',
|
|
allow_downgrade: true
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'installs wget' do
|
|
%w{wget crontabs cronie}.each do |pkg|
|
|
expect(chef_run).to install_yum_package(pkg)
|
|
end
|
|
end
|
|
|
|
it 'generates zabbix_agentd.conf file' do
|
|
expect(chef_run).to create_template('/etc/zabbix/zabbix_agentd.conf')
|
|
.with(
|
|
owner: 'root',
|
|
group: 'root',
|
|
mode: '0644',
|
|
source: 'zabbix_agentd.conf.erb'
|
|
)
|
|
expect(zabbix_agent_template).to notify('service[zabbix-agent]').to(:restart).delayed
|
|
end
|
|
|
|
it 'enables and starts zabbix service' do
|
|
expect(chef_run).to enable_service('zabbix-agent')
|
|
expect(chef_run).to start_service('zabbix-agent')
|
|
end
|
|
|
|
it 'creates zabbix trap directories' do
|
|
%w[ /etc/zabbix/trap.d /etc/zabbix/trap.d/live /etc/zabbix/trap.d/daily ].each do |path|
|
|
expect(chef_run).to create_directory(path)
|
|
.with(
|
|
owner: 'root',
|
|
group: 'root',
|
|
mode: '0755'
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'populates trap.d directory' do
|
|
expect(chef_run).to create_remote_directory('/etc/zabbix/trap.d')
|
|
.with(
|
|
files_backup: 0,
|
|
files_owner: 'root',
|
|
files_group: 'zabbix',
|
|
files_mode: '0750',
|
|
owner: 'root',
|
|
group: 'root',
|
|
source: 'traps'
|
|
)
|
|
end
|
|
|
|
it 'renders mongo trap' do
|
|
expect(chef_run).to create_template('/etc/zabbix/trap.d/mongo26.config')
|
|
.with(
|
|
owner: 'root',
|
|
group: 'root',
|
|
mode: '0700',
|
|
source: 'mongo26.config.erb'
|
|
)
|
|
expect(chef_run).to render_file('/etc/zabbix/trap.d/mongo26.config')
|
|
.with_content('mongoUser="unit_test_username"
|
|
mongoPass="unit_test_password"')
|
|
end
|
|
|
|
it 'renders links to trap scripts' do
|
|
httplink = chef_run.link('/etc/zabbix/trap.d/live/httpd.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/httpd.sh')
|
|
.with(to: '/etc/zabbix/trap.d/httpd.sh')
|
|
expect(httplink).to link_to('/etc/zabbix/trap.d/httpd.sh')
|
|
|
|
openldap2 = chef_run.link('/etc/zabbix/trap.d/live/openldap2.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/openldap2.sh')
|
|
.with(to: '/etc/zabbix/trap.d/openldap2.sh')
|
|
expect(openldap2).to link_to('/etc/zabbix/trap.d/openldap2.sh')
|
|
|
|
sp = chef_run.link('/etc/zabbix/trap.d/live/sp.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/sp.sh')
|
|
.with(to: '/etc/zabbix/trap.d/sp.sh')
|
|
expect(sp).to link_to('/etc/zabbix/trap.d/sp.sh')
|
|
|
|
idp = chef_run.link('/etc/zabbix/trap.d/live/idp.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/idp.sh')
|
|
.with(to: '/etc/zabbix/trap.d/idp.sh')
|
|
expect(idp).to link_to('/etc/zabbix/trap.d/idp.sh')
|
|
|
|
tomcat = chef_run.link('/etc/zabbix/trap.d/live/tomcat.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/tomcat.sh')
|
|
.with(to: '/etc/zabbix/trap.d/tomcat.sh')
|
|
expect(tomcat).to link_to('/etc/zabbix/trap.d/tomcat.sh')
|
|
|
|
mongo26 = chef_run.link('/etc/zabbix/trap.d/live/mongo26.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/mongo26.sh')
|
|
.with(to: '/etc/zabbix/trap.d/mongo26.sh')
|
|
expect(mongo26).to link_to('/etc/zabbix/trap.d/mongo26.sh')
|
|
|
|
ssl_check_apache = chef_run.link('/etc/zabbix/trap.d/live/ssl_check_apache.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/ssl_check_apache.sh')
|
|
.with(to: '/etc/zabbix/trap.d/ssl_check_apache.sh')
|
|
expect(ssl_check_apache).to link_to('/etc/zabbix/trap.d/ssl_check_apache.sh')
|
|
|
|
ssl_check_ldap = chef_run.link('/etc/zabbix/trap.d/live/ssl_check_ldap.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/ssl_check_ldap.sh')
|
|
.with(to: '/etc/zabbix/trap.d/ssl_check_ldap.sh')
|
|
expect(ssl_check_ldap).to link_to('/etc/zabbix/trap.d/ssl_check_ldap.sh')
|
|
|
|
ssl_check_mongo = chef_run.link('/etc/zabbix/trap.d/live/ssl_check_mongo.sh')
|
|
expect(chef_run).to create_link('/etc/zabbix/trap.d/live/ssl_check_mongo.sh')
|
|
.with(to: '/etc/zabbix/trap.d/ssl_check_mongo.sh')
|
|
expect(ssl_check_mongo).to link_to('/etc/zabbix/trap.d/ssl_check_mongo.sh')
|
|
|
|
end
|
|
|
|
it 'creates trapper crons' do
|
|
expect(chef_run).to create_cron('zabbix_live')
|
|
.with(
|
|
minute: '*',
|
|
hour: '*',
|
|
user: 'root',
|
|
)
|
|
expect(chef_run).to_not create_cron('zabbix_daily')
|
|
.with(
|
|
minute: '*',
|
|
hour: '0',
|
|
user: 'root',
|
|
)
|
|
end
|
|
|
|
end
|
|
end
|