The fastest way to run Chef cookbooks
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bundler
chef
cli
driver
exec
log
openssh
packaging
provisioner
resolver
rsync
script
testdata
util
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
Makefile
README.md
main.go
version.go
version_test.go

README.md

chef-runner - The fastest way to run Chef cookbooks

Build Status GoDoc

The goal of chef-runner is to speed up your Chef development and testing workflow by allowing you to change infrastructure code and get immediate feedback.

chef-runner was originally developed as a fast alternative to the painfully slow vagrant provision. The tool has since evolved and can now be used to rapidly provision not only local Vagrant machines but also remote hosts like EC2 instances.

To further shorten the feedback loop, chef-runner integrates with Vim so you don't have to leave your editor while hacking on recipes.

For more background, check out my blog post "Telling people about chef-runner".

Quick Start

Install chef-runner using one of the available installation methods.

Use chef-runner for local cookbook development with Vagrant:

$ cd my-awesome-cookook/
$ vagrant up
$ chef-runner # will run recipes/default.rb inside the Vagrant machine

Compose Chef run list using flexible recipe syntax:

$ chef-runner recipes/foo.rb
$ chef-runner ::foo                        # same as above
$ chef-runner dogs::bar
$ chef-runner dogs                         # same as dogs::default
$ chef-runner recipes/foo.rb bar dogs::baz # will run recipes in given order
$ chef-runner recipe[cats],dogs::bar       # standard Chef syntax

Provision a specific Vagrant machine in a multi-machine environment:

$ chef-runner -M db ...

Provision any Vagrant machine by specifying the machine's UUID:

$ chef-runner -M a748337 ...

Use chef-runner for local cookbook development with Test Kitchen:

$ kitchen converge default-ubuntu-1404
$ chef-runner -K default-ubuntu-1404 ...

Use chef-runner as a general purpose Chef provisioner for any system reachable over SSH:

$ cd directory-with-berksfile/
$ chef-runner -H user@example.local apt::default dogs::bar

(chef-runner automatically resolves cookbook dependencies using tools like Berkshelf or Librarian-Chef.)

Use chef-runner to provision the host system without running commands as root:

$ chef-runner -L --sudo=false

If required, install a specific version of Chef before provisioning:

$ chef-runner -i 11.12.8 ...

More Information

License

Please see LICENSE for licensing details.

Want to help?

See the Development wiki page for details on how to get the source code and build chef-runner locally.

Author

chef-runner is being developed by Mathias Lafeldt.