diff --git a/.nodeset.yml b/.nodeset.yml new file mode 100644 index 00000000..767f9cd2 --- /dev/null +++ b/.nodeset.yml @@ -0,0 +1,31 @@ +--- +default_set: 'centos-64-x64' +sets: + 'centos-59-x64': + nodes: + "main.foo.vm": + prefab: 'centos-59-x64' + 'centos-64-x64': + nodes: + "main.foo.vm": + prefab: 'centos-64-x64' + 'fedora-18-x64': + nodes: + "main.foo.vm": + prefab: 'fedora-18-x64' + 'debian-607-x64': + nodes: + "main.foo.vm": + prefab: 'debian-607-x64' + 'debian-70rc1-x64': + nodes: + "main.foo.vm": + prefab: 'debian-70rc1-x64' + 'ubuntu-server-10044-x64': + nodes: + "main.foo.vm": + prefab: 'ubuntu-server-10044-x64' + 'ubuntu-server-12042-x64': + nodes: + "main.foo.vm": + prefab: 'ubuntu-server-12042-x64' diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..128f9fe3 --- /dev/null +++ b/Gemfile @@ -0,0 +1,26 @@ +source 'https://rubygems.org' + +group :development, :test do + gem 'rake', :require => false + gem 'rspec-puppet', :require => false + gem 'puppetlabs_spec_helper', :require => false + gem 'rspec-system', :require => false + gem 'rspec-system-puppet', :require => false + gem 'rspec-system-serverspec', :require => false + gem 'puppet-lint', :require => false + gem 'pry', :require => false +end + +if facterversion = ENV['FACTER_GEM_VERSION'] + gem 'facter', facterversion, :require => false +else + gem 'facter', :require => false +end + +if puppetversion = ENV['PUPPET_GEM_VERSION'] + gem 'puppet', puppetversion, :require => false +else + gem 'puppet', :require => false +end + +# vim:ft=ruby diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..bb60173e --- /dev/null +++ b/Rakefile @@ -0,0 +1,2 @@ +require 'puppetlabs_spec_helper/rake_tasks' +require 'rspec-system/rake_task' diff --git a/manifests/forwarder.pp b/manifests/forwarder.pp index 655a15d0..e9b57e8c 100644 --- a/manifests/forwarder.pp +++ b/manifests/forwarder.pp @@ -117,7 +117,7 @@ # to the agnostic resources declared here. case $::kernel { default: { } # no special configuration needed - 'Linux': { include splunk::platform::posix } + 'Linux': { class { 'splunk::platform::posix': splunkd_port => $splunkd_port, } } 'SunOS': { include splunk::platform::solaris } } diff --git a/manifests/platform/posix.pp b/manifests/platform/posix.pp index bf7d2d55..9bb8b2ab 100644 --- a/manifests/platform/posix.pp +++ b/manifests/platform/posix.pp @@ -14,7 +14,9 @@ # # Requires: nothing # -class splunk::platform::posix inherits splunk::virtual { +class splunk::platform::posix ( + $splunkd_port = $splunk::splunkd_port, +) inherits splunk::virtual { # Many of the resources declared here are virtual. They will be realized by # the appropriate including class if required. @@ -67,7 +69,7 @@ restart => '/opt/splunk/bin/splunk restart splunkd', start => '/opt/splunk/bin/splunk start splunkd', stop => '/opt/splunk/bin/splunk stop splunkd', - pattern => "splunkd -p ${splunk::splunkd_port} (restart|start)", + pattern => "splunkd -p ${splunkd_port} (restart|start)", require => Service['splunk'], } Service['splunkweb'] { diff --git a/spec/spec.opts b/spec/spec.opts new file mode 100644 index 00000000..de653df4 --- /dev/null +++ b/spec/spec.opts @@ -0,0 +1,4 @@ +--format s +--colour +--loadby mtime +--backtrace diff --git a/spec/spec_helper_system.rb b/spec/spec_helper_system.rb new file mode 100644 index 00000000..ce97663f --- /dev/null +++ b/spec/spec_helper_system.rb @@ -0,0 +1,27 @@ +require 'rspec-system/spec_helper' +require 'rspec-system-puppet/helpers' +require 'rspec-system-serverspec/helpers' +include RSpecSystemPuppet::Helpers + +RSpec.configure do |c| + # Project root + proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + + # Enable colour + c.tty = true + + c.include RSpecSystemPuppet::Helpers + + # This is where we 'setup' the nodes before running our tests + c.before :suite do + # Install puppet + puppet_install + + # Install modules and dependencies + puppet_module_install(:source => proj_root, :module_name => 'splunk') + shell('puppet module install nanliu-staging --version 0.3.1') + shell('puppet module install puppetlabs-stdlib --version 3.0.0') + shell('puppet module install puppetlabs-inifile --version 1.0.0') + end +end + diff --git a/spec/system/forwarder_spec.rb b/spec/system/forwarder_spec.rb new file mode 100644 index 00000000..8bc39288 --- /dev/null +++ b/spec/system/forwarder_spec.rb @@ -0,0 +1,52 @@ +require 'spec_helper_system' +require 'pry' + +describe 'setting up the forwarder' do + + it 'should be able to set up a forwarder' do + pp = <<-EOS + class { 'splunk::params': + version => '6.0', + build => '182037', + } + class { 'splunk::forwarder': } + EOS + + # Run it twice and test for idempotency + puppet_apply(pp) do |r| + r.exit_code.should_not == 1 + r.refresh + r.exit_code.should be_zero + end + end + + describe service('splunk') do + it { should be_running } + end + + it 'changes the transforms settings for the forwarder' do + pp = <<-EOS + splunkforwarder_transforms { 'hadoop severity regex': + section => 'hadoop_severity', + setting => 'REGEX', + value => '\\d', + } + splunkforwarder_transforms { 'hadoop severity format': + section => 'hadoop_severity', + setting => 'FORMAT', + value => 'severity::$1', + } + EOS + + # Run it twice and test for idempotency + puppet_apply(pp) do |r| + r.exit_code.should_not == 1 + r.refresh + r.exit_code.should be_zero + end + end + + describe file('/opt/splunkforwarder/etc/system/local/transforms.conf') do + its(:content) { should match(/\[hadoop_severity\]\nREGEX=\\d\nFORMAT=severity/) } + end +end