Categories
Infrastructure

Testing logstash configs with Docker

Now this is really not rocket science, but since I might do this more often, I don’t want to google every time.

Prepare your directories

./tmp                   # THIS IS YOUR WORKING DIRECTORY
  |- patterns/          # optional
  |   |- patternfile1   # optional
  |   |- patternfile2   # optional
  |- logs.log
  |- logstash.conf

Prepare your logstash config

# logstash.conf
input {
  file {
    path => '/stash/logs.log'
  }
}

filter {
  # whatever config you want to test
  grok {
    match        => [ "message", "%{WHATEVER}" ]
    patterns_dir => '/stash/patterns'              # optional :)
  }
}

output {
  stdout { codec => rubydebug }
}

Run logstash

docker run --rm -ti -v $(pwd):/stash logstash logstash -f /stash/logstash.conf

Done.

Done. 🙂

Categories
Puppet

Loathing RSpec and Puppet

There are words for how much I hate RSpec (especially RSpec-Puppet), but they would be too harsh to write down.

So now that I don’t have to google the same shit over and over again, here’s what you have to do to get basic puppet module testing up and running (replace $MODULE with your module name, of course):

$MODULE/Rakefile

require 'rubygems'
require 'puppetlabs_spec_helper/rake_tasks'

$MODULE/.fixtures.yml

fixtures:
  repositories:
    concat: git://github.com/puppetlabs/puppetlabs-concat.git
    # alternate method, for specifying refs
    stdlib: 
      repo: git://github.com/puppetlabs/puppetlabs-stdlib.git
      ref:  1.0.0
  symlinks:
    # do _not_ forget this
    $MODULE: "#{source_dir}"

$MODULE/spec/spec_helper.rb

require 'rubygems'
require 'puppetlabs_spec_helper/module_spec_helper'

$MODULE/spec/classes/$MODULE_spec.rb

# see also http://rspec-puppet.com/
require 'spec_helper'

describe '$MODULE' do
  context 'default' do
    it {
      should contain_file('/etc/haproxy/haproxy.conf')
    }

    # or ...
    it do
      is_expected.to contain_file('/this/syntax/is/even/more/retarded')
    end
  end
end

Final note

It’s “rake spec”, not “rake test”. Of course.

Categories
Puppet

Puppet spec fixtures

That’s how you specify branches in puppetlabs’ spec_helper fixtures.yml:

fixtures:
  forge_modules:
    stdlib:
      repo: "puppetlabs/stdlib"
      ref: "4.6.0"
  symlinks:
    mapr_helpers: "#{source_dir}"
  repositories:
    mapr:
      repo: "http://myurl/puppet-mapr.git"
      # this is a branch. stolen from: don't remember.
      ref: 'remotes/origin/ab/devel'