No description
Find a file
2015-10-26 11:46:43 +01:00
.delivery only move unit tests to fixed build node 2015-10-25 23:15:14 +01:00
bin create json from profile metadata 2015-10-26 00:35:18 +01:00
docs fail with warning, if users use contain matcher 2015-10-24 11:15:53 +02:00
examples/test-kitchen simplify os tests 2015-10-21 13:00:08 +02:00
lib dont fail on missing rule body source 2015-10-26 11:46:43 +01:00
test add folder test and test more file matcher 2015-10-25 21:36:49 +01:00
.gitignore ignore local bundle config 2015-10-26 11:36:42 +01:00
.rubocop.yml lint 2015-10-26 04:39:16 +01:00
.travis.yml fix travis builds for 1.9.3 2015-10-25 23:22:52 +01:00
CHANGELOG.md 0.8.0 2015-10-21 21:49:07 +02:00
Gemfile move concurrent ruby gem to test group 2015-10-25 23:14:19 +01:00
Rakefile setup test-kitchen workflow 2015-10-23 12:14:00 +02:00
README.md remove os_ prefix from detect json syntax 2015-09-23 10:25:05 +02:00
vulcano.gemspec migrate backend to Train project 2015-10-14 23:13:49 +02:00

Vulcano CLI

Test your Server, VM, or workstation.

Small example: Write a your checks in test.rb:

describe file('/proc/cpuinfo') do
  it { should be_file }
end

describe ssh_config do
  its('Protocol') { should eq('2') }
end

Run this file locally:

vulcano exec test.rb

Installation

Requires Ruby ( >1.9 ).

To simply run it without installation, you must install bundler:

bundle install
bundle exec bin/vulcano help

To install it as a gem locally, run:

gem build vulcano.gemspec
gem install vulcano-*.gem

You should now be able to run:

vulcano --help

Usage

exec

Run tests against different targets:

# run test locally
vulcano exec test.rb

# run test on remote host on SSH
vulcano exec test.rb -t ssh://user@hostname

# run test on remote windows host on WinRM
vulcano exec test.rb -t winrm://Administrator@windowshost --password 'your-password'

# run test on docker container
vulcano exec test.rb -t docker://container_id

detect

Verify your configuration and detect

id=$( docker run -dti ubuntu:14.04 /bin/bash )
vulcano detect -t docker://$id

Which will provide you with:

{"family":"ubuntu","release":"14.04","arch":null}

Custom resources

You can easily create your own resources. Here is a custom resource for an application called Gordon and save it in gordon_config.rb:

require 'yaml'

class GordonConfig < Vulcano.resource
  name 'gordon_config'

  def initialize
    @path = '/etc/gordon/config.yaml'
    @config = vulcano.file(@path).content
    @params = YAML.load(@config)
  end

  def method_missing(name)
    @params[name.to_s]
  end
end

Include this file in your test.rb:

require_relative 'gordon_config'

Now you can start using your new resource:

describe gordon_config do
  its('Version') { should eq('1.0') }
end

Tests

Runner

Runner tests will make sure the backend execution layer behaves as expected. These tests will take a while, as a lot of different operating systems and configurations are being tested.

You will require:

  • vagrant with virtualbox
  • test-kitchen
  • docker

Run all tests via

rake test:runner

# configure concurrency:
CONCURRENCY=3 rake test:runner

This will go to test/runner and run kitchen test. You can test specific operating systems and configurations via test-kitchen.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Copyright 2015 Chef Software Inc. All rights reserved. Copyright 2015 Vulcano Security GmbH. All rights reserved. Copyright 2015 Dominik Richter. All rights reserved.