A Vagrant plugin that ensures the desired version of Chef is installed via the platform-specific Omnibus packages. This proves very useful when using Vagrant with provisioner-less baseboxes OR cloud images.
The plugin should work correctly with most all providers that hook into
Vagrant::Action::Builtin::Provision
for provisioning and is
known to work with the following
Vagrant providers:
- VirtualBox (part of core)
- AWS (ships in vagrant-aws plugin)
- Rackspace (ships in vagrant-rackspace plugin)
- VMWare Fusion (can be purchased from Hashicorp)
- LXC (ships in vagrant-lxc)
- OpenStack (ships in vagrant-openstack-plugin)
- Digital Ocean (ships in vagrant-digitalocean)
- Parallels Desktop (ships in vagrant-parallels)
Ensure you have downloaded and installed Vagrant 1.1 or newer from the Vagrant downloads page.
Installation is performed in the prescribed manner for Vagrant 1.1 plugins.
$ vagrant plugin install vagrant-omnibus
The Omnibus Vagrant plugin automatically hooks into the Vagrant provisioning
middleware. You specify the version of the Chef Omnibus package you want
installed using the omnibus.chef_version
config key. The version string
should be a valid Chef release version or :latest
.
Install the latest version of Chef:
Vagrant.configure("2") do |config|
config.omnibus.chef_version = :latest
...
end
Install a specific version of Chef:
Vagrant.configure("2") do |config|
config.omnibus.chef_version = "11.4.0"
...
end
Specify a custom install script:
Vagrant.configure("2") do |config|
config.omnibus.install_url = 'http://acme.com/install.sh'
# config.omnibus.install_url = 'http://acme.com/install.msi'
# config.omnibus.install_url = '/some/path/on/the/host'
...
end
If vagrant-cachier is present
and config.cache.auto_detect
enabled the downloaded omnibus packages will
be cached by vagrant-cachier. In case you want to turn caching off:
Vagrant.configure("2") do |config|
config.omnibus.cache_packages = false
...
end
This plugin is also multi-vm aware so it would possible to say install a different version of Chef on each VM:
Vagrant.configure("2") do |config|
config.vm.define :new_chef do |new_chef_config|
...
new_chef_config.omnibus.chef_version = :latest
...
end
config.vm.define :old_chef do |old_chef_config|
...
old_chef_config.omnibus.chef_version = "10.24.0"
...
end
end
The unit tests can be run with:
rake test:unit
The test are also executed by Travis CI every time code is pushed to GitHub.
Currently this repo ships with a set of basic acceptance tests that will:
- Provision a Vagrant instance.
- Attempt to install Chef using this plugin.
- Perform a very basic chef-solo run to ensure Chef is in fact installed.
The acceptance tests can be run against a subset of the Vagrant providers listed above. The acceptance tests can be run with:
rake test:acceptance:PROVIDER_NAME
And as expected, all acceptance tests only uses provisioner-less baseboxes and cloud images!
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Seth Chisamore (schisamo@opscode.com)