catfish

Catfish is a command line tool and set of associated Vagrantfile templates that makes provisioning existing servers with vagrant-managed-servers easy. It is designed from the ground up to be cross-platform, with first class support for Windows, Linux, and Mac.

Installation

Add this line to your application's Gemfile:

gem 'catfish'

And then execute:

$ bundle

Or install it yourself as:

$ gem install catfish

Usage

Initialize your repository

Initialize a catfish repository in the current directory, which will create a Catfishfile and a Vagrantfile at a minimum.

$ catfish init

Specify connection options for ssh

$ catfish init --ssh-username=YOUR_USERNAME --ssh-private-key-path=YOUR_SSH_KEY_PATH

Include two shell provisioners

$ catfish init --provisioners=shell --shell-paths=./script/a.sh ./script/b.sh

Add the target servers in your Catfishfile

server 'myserver1.mydomain.com'
server 'myserver2.mydomain.com'

Provision your servers

$ catfish provision

And you can even run the provisioning in parallel

$ catfish provision --parallel

Plugins

You can have catfish ensure that vagrant plugins are installed via the 'plugin' directive in your Catfishfile.

plugin 'vagrant-hostmaster'
$ catfish plugin

Getting help

$ catfish help

TODO

  • Puppet provisioner support
  • Add some spec tests

Contributing

  1. Fork it ( https://github.com/chrisbaldauf/catfish/fork )
  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 a new Pull Request