inspec/README.md

157 lines
2.8 KiB
Markdown
Raw Normal View History

# Vulcano CLI
Test your Server, VM, or workstation.
Small example: Write a your checks in `test.rb`:
```ruby
describe file('/proc/cpuinfo') do
it { should be_file }
end
describe ssh_config do
its('Protocol') { should eq('2') }
end
```
Run this file locally:
```bash
vulcano exec test.rb
```
## Installation
Requires Ruby ( >1.9 ).
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:
```bash
gem build vulcano.gemspec
gem install vulcano-*.gem
```
You should now be able to run:
```bash
vulcano --help
```
## Usage
### exec
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'
# run test on docker container
2015-09-15 14:21:11 +00:00
vulcano exec test.rb -t docker://container_id
```
### 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:
```
{"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`:
```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
```
## 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
```
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
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
Copyright 2015 Chef Software Inc. All rights reserved.
Copyright 2015 Vulcano Security GmbH. All rights reserved.
Copyright 2015 Dominik Richter. All rights reserved.