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

Include two shell script provisioners

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

You can template out a puppet repository

$ catfish init --puppet

Initialize a Windows configuration using winrm

$ catfish init --windows

Managed servers

Catfish can also help you manage pre-existing servers that can communicate over SSH or WinRM. To enable managed mode, make sure to pass the --managed flag to init

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

Add the target servers in your Catfishfile

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

Provisioning

$ 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

  • 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