2015-09-07 15:18:44 +00:00
|
|
|
# Vulcano CLI
|
2015-04-09 15:34:05 +00:00
|
|
|
|
2015-09-07 15:18:44 +00:00
|
|
|
Test your Server, VM, or workstation.
|
2015-04-09 15:34:05 +00:00
|
|
|
|
2015-09-07 15:20:39 +00:00
|
|
|
Small example: Write a your checks in `test.rb`:
|
2015-06-10 15:38:24 +00:00
|
|
|
|
|
|
|
```ruby
|
2015-09-07 15:18:44 +00:00
|
|
|
describe file('/proc/cpuinfo') do
|
|
|
|
it { should be_file }
|
2015-06-10 15:38:24 +00:00
|
|
|
end
|
2015-09-07 15:18:44 +00:00
|
|
|
|
|
|
|
describe ssh_config do
|
|
|
|
its('Protocol') { should eq('2') }
|
|
|
|
end
|
|
|
|
```
|
|
|
|
|
2015-09-07 15:20:39 +00:00
|
|
|
Run this file locally:
|
2015-09-07 15:18:44 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
vulcano exec test.rb
|
|
|
|
```
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
2015-09-07 15:24:07 +00:00
|
|
|
Requires Ruby ( >1.9 ).
|
2015-09-07 15:18:44 +00:00
|
|
|
|
2015-09-07 15:24:07 +00:00
|
|
|
To simply run it without installation, you must install [bundler](http://bundler.io/):
|
|
|
|
|
|
|
|
```bash
|
|
|
|
bundle install
|
|
|
|
bundle exec bin/vulcano help
|
|
|
|
```
|
|
|
|
|
|
|
|
To install it as a gem locally, run:
|
2015-09-07 15:18:44 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
gem build vulcano.gemspec
|
|
|
|
gem install vulcano-*.gem
|
|
|
|
```
|
|
|
|
|
|
|
|
You should now be able to run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
vulcano --help
|
|
|
|
```
|
|
|
|
|
2015-09-23 08:08:12 +00:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
### exec
|
2015-09-07 15:18:44 +00:00
|
|
|
|
|
|
|
Run tests against different targets:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# 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
|
2015-09-15 14:21:11 +00:00
|
|
|
vulcano exec test.rb -t winrm://Administrator@windowshost --password 'your-password'
|
2015-09-07 15:18:44 +00:00
|
|
|
|
|
|
|
# run test on docker container
|
2015-09-15 14:21:11 +00:00
|
|
|
vulcano exec test.rb -t docker://container_id
|
2015-06-10 15:38:24 +00:00
|
|
|
```
|
|
|
|
|
2015-09-23 08:08:12 +00:00
|
|
|
### detect
|
|
|
|
|
|
|
|
Verify your configuration and detect
|
|
|
|
|
|
|
|
```bash
|
|
|
|
id=$( docker run -dti ubuntu:14.04 /bin/bash )
|
|
|
|
vulcano detect -t docker://$id
|
|
|
|
```
|
|
|
|
|
|
|
|
Which will provide you with:
|
|
|
|
|
|
|
|
```
|
|
|
|
{"os_family":"ubuntu","os_release":"14.04","os_arch":null}
|
|
|
|
```
|
|
|
|
|
2015-09-07 15:18:44 +00:00
|
|
|
## 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`:
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
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`:
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
require_relative 'gordon_config'
|
|
|
|
```
|
|
|
|
|
|
|
|
Now you can start using your new resource:
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
describe gordon_config do
|
|
|
|
its('Version') { should eq('1.0') }
|
|
|
|
end
|
|
|
|
```
|
|
|
|
|
2015-09-15 13:05:11 +00:00
|
|
|
## 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
|
|
|
|
|
|
|
|
```bash
|
|
|
|
rake test:runner
|
|
|
|
|
|
|
|
# configure concurrency:
|
|
|
|
CONCURRENCY=3 rake test:runner
|
|
|
|
```
|
|
|
|
|
2015-09-22 12:35:01 +00:00
|
|
|
This will go to `test/runner` and run `kitchen test`. You can test specific
|
2015-09-15 13:05:11 +00:00
|
|
|
operating systems and configurations via test-kitchen.
|
|
|
|
|
2015-09-07 15:18:44 +00:00
|
|
|
## Contributing
|
|
|
|
|
|
|
|
1. Fork it
|
|
|
|
1. Create your feature branch (git checkout -b my-new-feature)
|
|
|
|
1. Commit your changes (git commit -am 'Add some feature')
|
|
|
|
1. Push to the branch (git push origin my-new-feature)
|
|
|
|
1. Create new Pull Request
|
|
|
|
|
2015-06-10 15:38:24 +00:00
|
|
|
|
2015-09-07 15:18:44 +00:00
|
|
|
Copyright 2015 Chef Software Inc. All rights reserved.
|
|
|
|
Copyright 2015 Vulcano Security GmbH. All rights reserved.
|
2015-04-09 15:34:05 +00:00
|
|
|
Copyright 2015 Dominik Richter. All rights reserved.
|