Awesome
Bindler
Dead easy Vagrant plugins management, think of it as "Bundler for Vagrant".
NOTICE: This plugin is no longer being maintained, if you are interested on picking up the gem name or wants to continue the work on it please let @fgrehm know.
WARNING
This is highly experimental and things might go wrong. It basically does some heavy monkey patching on Vagrant's core and should not be considered "production-ready". Please keep that in mind and be ready to revert Bindler's installation in case things go crazy.
Installation
The plugin works with Vagrant 1.2 and 1.3 only and will error out if you are using a newer version.
To get the latest version of Bindler simply run the following:
vagrant plugin install bindler
vagrant bindler setup
To install a pre-release or legacy version of the plugin look through the
Bindler releases page on GitHub,
download the bindler-VERSION.gem
, and run the following:
# Set $VERSION to the version you want to install
VERSION='0.1.4'
# Assuming you dowloaded the gem to ~/Downloads
vagrant plugin install ~/Downloads/bindler-$VERSION.gem
Changelog
The Bindler releases page on GitHub gives you a great overview of all the changes that get into every release of Bindler. You can also view the commit history
Usage
Add a plugin manifest file under one of these filenames. Currently the accepted formats are JSON and YAML. The recommended filenames are plugins.json
or plugins.yml
. You can even add your own plugin manifest name using the $VAGRANT_PLUGINS_FILENAME
variable. The JSON/YAML format plugins as their names (strings) or their name and version (key-value pair):
Example JSON:
[
"vagrant-lxc",
{
"vagrant-cachier": "0.2.0"
}
]
Example YAML:
- vagrant-lxc
- vagrant-cachier: 0.2.0
In a project with a plugins file you can simply run vagrant plugin bundle
to
install any missing dependencies:
$ vagrant plugin bundle
Installing plugins...
-> vagrant-lxc already installed
-> vagrant-cachier (0.2.0)
List installed plugins with vagrant plugin list
:
$ vagrant plugin list
vagrant-lxc (0.4.0)
bindler (0.1.1)
Project dependencies:
-> vagrant-lxc
-> vagrant-cachier 0.2.0
Help! Things are falling apart!
First bring back Vagrant's default plugins.json
file:
mv $HOME/.vagrant.d/{global-,}plugins.json
And then remove the require 'bindler'
from your $HOME/.vagrant.d/Vagrantfile
.
How does it work?
Have a look at this blog post.
Contributing
# Clone the project from origin
git clone https://github.com/fgrhem/bindler
# Fork the project on GitHub and add it as a remote in your local repository
git remote add fork https://github.com/USERNAME/bindler
cd bindler/
bundle install
git checkout -b feature/your-awesome-feature # or fix/your-awesome-bug-fix
# Add and test out your changes
rake build
vagrant plugin install pkg/bindler-VERSION.gem
# Push your changes to the forked branch
git push fork feature/your-awesome-feature # or fix/your-awesome-bug-fix
# Create a pull request on GitHub