Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A Virtualbox / Vagrant / Librarian / Chef setup for WordPress development.
Latest commit 43a005b @lewg Fix wordpress typo. Thx @c0smic
Failed to load latest commit information.
Cheffile Add build-essential
Cheffile.lock Update to use new wordpress plugins/themes method.
Vagrantfile Fix wordpress typo. Thx @c0smic


A Virtualbox / Vagrant / Librarian / Chef setup for WordPress development.


The idea is to provide a lightweight, consistent development environment. We do this by providing just enough instruction that the combination of VirtualBox, Vagrant, Librarian and Chef can handle building and configuring our dev box. So, you'll need those things! Here's the links:

Note: Although Vagrant is still available as a ruby gem, there are some dependency issues with Librarian. Also, it seems that the standalone package is going to be the officially supported version, so that's what I'm going with these days.


After cloning the reposity, have librarian-chef install the cookbooks

librarian-chef install

Bring up your new box.

vagrant up

Visit your site via IP to complete your install:


What will really make this work for you is tinkering in the Vagrantfile definition to meet your development needs. I've made a few changes and additions to the defaults for our specific case of WordPress development.

Base Box

To get you up and running quickly, I've specified a base box based on the 32-bit Ubuntu 10.04 version provided by the Vagrant site. If you're comfortable with Vagrant, by all means, provide your own! Here's the relevant lines:

# Every Vagrant virtual environment requires a box to build off of. = "lucid32"

# The url from where the '' box will be fetched if it
# doesn't already exist on the user's system.
config.vm.box_url = ""


I've added a host-only IP of If you plan to run multiple boxes at once, you may want to start changing them. Here's the relevant line: :hostonly, ""

Shared Folders

I've put commented lines in there for mapping folders into both the plugins and themes folders. Uncomment, adjust to your local paths, vagrant reload and your local folders are now being run by the WordPress install in your VM. Look for these lines:

# Example Theme Mount
# config.vm.share_folder "my-theme", "/var/www/wordress/wp-content/themes/my-theme"

# Example Plugin
# config.vm.share_folder "my-plugin", "/var/www/wordpress/wp-content/plugins/my-plugin" Plugin and Themes

You can specify a list of plugins to automatically when the VM comes up. Debug Bar is in there as a default (you are using this for development, right?) but you can add and remove to match your setup. By default, just given a name, the defintion will attempt to guess the path to the plugin (on by replacing all the spaces with dashes, and removing some punctutation. Additionally, it will pull the latest version of the plugin based off the information provided by the plugin's readme.txt file. However, both the path and tag can be overridden ('trunk' being a special case, and choosing the trunk of the repository over a tag) The relevant lines in Vagrantfile:

# Include the list of plugins you'd like installed
"org_plugins" => {
  'Debug Bar' => {},
  #' Service' => {
  #  'path' => 'bitly-service',
  #  'tag' => 'trunk'

Like the plugin defintion and recipe above, there is also the ability to install themes from the theme repository. The syntax is the same as above, and by default the Vagrantfile has the two examples commented out:

# Include the list of themes you'd like installed
'org_themes' => {
  #'Toolbox' => {},
  #'Pagelines' => {
  #  'path' => 'pagelines',
  #  'tag' => '1.1.3'

Unlike the mount points, you don't have to restart the VM if you add plugins or themes, just trigger a chef run with vagrant provision

Something went wrong with that request. Please try again.