A Vagrant plugin to add Berkshelf integration to the Chef provisioners
Latest commit c1ab437 Dec 6, 2016 @thommay thommay committed on GitHub Merge pull request #313 from berkshelf/tm/5_1_1
Ready 5.1.1 release


Vagrant Berkshelf Plugin

Gem Version Build Status

Vagrant Berkshelf is a Vagrant plugin that adds Berkshelf integration to the Chef provisioners. Vagrant Berkshelf will automatically download and install cookbooks onto the Vagrant Virtual Machine.

vagrant-berkshelf vs. Test Kitchen

This plugin was created before the development of Test Kitchen and its usefulness in a post-Test Kitchen world is questionable. We believe Test Kitchen provides a robust and stable platform for testing cookbooks and we highly recommend using Test Kitchen instead of Vagrant for your cookbook testing workflows.

See Seth Vargo's blog post for additional information: https://sethvargo.com/the-future-of-vagrant-berkshelf/


  1. Install the latest version of Vagrant
  2. Install the latest version of ChefDK
  3. Install the Vagrant Berkshelf plugin:

    $ vagrant plugin install vagrant-berkshelf


If the Vagrant Berkshelf plugin is installed, it will intelligently detect when a Berksfile is present in the same working directory as the Vagrantfile.

Here is an example Vagrantfile configuration section for Vagrant Berkshelf:

Vagrant.configure("2") do |config|
  # The path to the Berksfile to use. The default value is "Berksfile" if one
  # exists, or nil if it does not.
  config.berkshelf.berksfile_path = "custom.Berksfile"

  # Enable Berkshelf. If a Berksfile exists or a berksfile_path is given, this
  # value is automatically set to true. If not, the value is false
  config.berkshelf.enabled = true

  # A list of Berkshelf groups to only install and sync to the Vagrant Virtual
  # Machine. The default value is an empty array.
  config.berkshelf.only = ["group_a", "group_b"]

  # A list of Berkshelf groups to not install and sync to the Vagrant Virtual
  # Machine. The default value is an empty array.
  config.berkshelf.except = ["group_c", "group_d"]

  # A list of extra values to pass to the `berks` executable. The default value
  # is an empty array.
  config.berkshelf.args = ["--format json"]


Thank you to all of our Contributors, testers, and users.

If you'd like to contribute, please see our contribution guidelines first.

License & Authors

Copyright (c) 2012-2014 Riot Games

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.