No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Deploy Chef "Top-Level Cookbooks" directly from a Git repository
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
~> 2.12.2
~> 2.12.1
 Project Readme

Vagrant Top-Level Cookbooks Plugin

Build Status

This Vagrant 1.2+ plugin lets you specify the top-level cookbooks to deploy your VMs with. It will take care of cloning the top-level cookbook from the Git repository, resolve its dependencies via Berkshelf, and configure the Chef Solo provisioner accordingly.

Note: this plugin was previously (until v0.1.4) named vagrant-application-cookbooks, but since the term "application cookbook" is so much overloaded in the Chef community I now call them "top-level cookbooks".

Features

  • allows you to deploy top-level cookbooks from a git repository (remote or local)
  • lets you choose a specific ref (i.e. commit, tag or branch) to deploy
  • resolves each VMs toplevel cookbook dependencies in isolation to .vagrant/app-cookbooks/<vm-name>/cookbooks/ (i.e. no inter-VM dependency conflicts)
  • uses the Berksfile that is shipped with the toplevel cookbook to resolve dependencies
  • configures the cookbooks_path of the :chef_solo provisioner accordingly

Usage

Install using standard Vagrant plugin installation method:

$ vagrant plugin install vagrant-toplevel-cookbooks

To deploy the sample-app toplevel cookbook from the master branch:

Vagrant.configure("2") do |config|
  config.vm.define :sample do |sample_config|
    sample_config.toplevel_cookbook.url = "https://github.com/tknerr/sample-toplevel-cookbook"
    sample_config.vm.provision :chef_solo do |chef|
      chef.add_recipe "sample-app"
    end
  end
end

Or to deploy from a specific git ref, branch or tag:

...
    sample_config.toplevel_cookbook.url = "https://github.com/tknerr/sample-toplevel-cookbook"
    sample_config.toplevel_cookbook.ref = "some_ref"
...

You can also use local file URLs:

...
    sample_config.toplevel_cookbook.url = "file:///path/to/toplevel-cookbook"
...

Development

To work on the vagrant-toplevel-cookbooks plugin, clone this repository out, and use Bundler to get the dependencies:

$ bundle

Once you have the dependencies, verify the unit tests pass with rake:

$ bundle exec rake

If those pass, you're ready to start developing the plugin. You can test the plugin without installing it into your Vagrant environment by using the Vagrantfile in the top level of this directory and use bundler to execute Vagrant.

To test that the my_app vm is deployed with the sample-app top-level cookbook simply run:

$ bundle exec vagrant up my_app