803efcdddc
makes them more accurate in the unknown future |
||
---|---|---|
.delivery | ||
bin | ||
docs | ||
examples/test-kitchen | ||
lib | ||
test | ||
.gitignore | ||
.rubocop.yml | ||
.travis.yml | ||
CHANGELOG.md | ||
Gemfile | ||
mkdocs.yml | ||
Rakefile | ||
README.md | ||
vulcano.gemspec |
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
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- 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.