No description
Find a file
Dominik Richter 08707eb2d2 temporarily attach the dsl to all example objects
TODO: Remove this!! It is very dangerous to do this here. The goal of this is to make the audit DSL available to all describe blocks. Right now, these blocks are executed outside the scope of this run, thus not gaining ony of the DSL pieces. To circumvent this, the full DSL is attached to the examples
2015-10-18 19:50:12 +02:00
.delivery fix delivery dependencies 2015-10-08 10:53:08 +02:00
bin restore detect command 2015-10-17 19:33:35 +02:00
docs update docs 2015-10-07 16:57:56 +02:00
lib temporarily attach the dsl to all example objects 2015-10-18 19:50:12 +02:00
test feature: support expect keyword in rules 2015-10-18 19:14:22 +02:00
.gitignore ignore local delivery config 2015-10-05 16:22:29 +02:00
.rubocop.yml activate lint in travis 2015-10-05 15:51:23 +02:00
.travis.yml activate lint in travis 2015-10-05 15:51:23 +02:00
CHANGELOG.md 0.7.0 2015-10-12 12:11:53 +02:00
Gemfile add train to gemfile (for now) 2015-10-15 00:43:02 +02:00
mkdocs.yml initial 2015-10-07 16:57:55 +02:00
Rakefile test: group resource tests 2015-10-17 22:53:21 +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.