Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

RSS

vagrant (15) Versions 0.9.1

Installs Vagrant and provides a vagrant_plugin resource for installing Vagrant plugins.

Berkshelf
Policyfile
Knife
cookbook 'vagrant', '~> 0.9.1'
cookbook 'vagrant', '~> 0.9.1', :supermarket
knife cookbook site install vagrant
knife cookbook site download vagrant
README
Dependencies
Changelog
Quality 100%

Vagrant Cookbook

Build Status Cookbook Version

Installs Vagrant 1.6+ and manages Vagrant plugins via a vagrant_plugin resource.

This cookbook is not intended to be used for vagrant "1.0" (gem install) versions. A recipe is provided for removing the gem, see Recipes.

This cookbook is not supported for installing versions of Vagrant older than 1.6.

Requirements

This cookbook should not be used on platforms that Vagrant itself does not support.

Vagrant Supported Platforms

Vagrant does not specifically list supported platforms on the project web site. However, the only platforms with packages provided are:

  • Mac OS X
  • Windows
  • Linux (deb-package based platforms, e.g., Debian and Ubuntu)
  • Linux (rpm-packaged based platforms, e.g., RHEL and CentOS)

Other platforms are not supported. This cookbook attempts to exit gracefully in places where unsupported platforms may cause an issue, but it is strongly recommended that this cookbook not be on an unsupported platform's node run list or used as a dependency for cookbooks used on unsupported platforms.

Tested with Test Kitchen

  • Debian 7.6
  • Ubuntu 14.04
  • CentOS 6.5
  • OS X 10.9
  • Windows 2012

May work on other Debian/RHEL family distributions with or without modification.

This cookbook has test-kitchen support for Windows and Mac OS X, but requires custom Vagrant boxes.

Because Vagrant is installed as a native system package, Chef must run as a privileged user (e.g., root or Administrator).

Attributes

'default' recipe. Install the Vagrant Package

The attributes defined for this cookbook are organized under the node['vagrant'] namespace.

Attribute Description Type Default
['version'] Vagrant package version String '2.0.3'
['url'] Download Vagrant package from this URL String Calculated by vagrant_package_uri helper method.
['checksum'] Vagrant package checksum (SHA256) String Calculated by vagrant_sha256sum helper method.

'install_plugins' recipe

Attributes in the table below are under the node['vagrant'] namespace.

Attribute Description Type Default
['plugins'] An array of plugins, e.g. %w(vagrant-aws vagrant-ohai vagrant-omnibus) Array nil
['plugins'] If you want to install specific plugin versions, use the second form of the ['plugins'] array, e.g. [ {name: 'vagrant-ohai', version: '0.1.3'}, {name: 'vagrant-aws', version: '0.6.0'} ] Array of Hashes nil
  • node['vagrant']['plugins'] - A array of plugins. The elements in the array can be a string or a hash. String elements should be the names of plugins to install. Hash elements should have two keys, "name" and "version", for the plugin name and its version to install. This is used by the vagrant_plugin resource in the install_plugins recipe.
  • node['vagrant']['user'] - A user that is used to automatically install plugins as for the node['vagrant']['plugins'] attribute.

Resources

This cookbook includes the:

  • vagrant resource, for installing vagrant.
  • vagrant_plugin resource, for managing vagrant plugins.

vagrant

Actions

  • :install: installs vagrant. Platform specific details are here.

Properties

  • :checksum: Vagrant package checksum (SHA256)
  • :url: Download Vagrant package from this URL
  • :version: Vagrant package version

Examples

vagrant 'Vagrant' do
  version node['vagrant']['version']
end

vagrant 'Vagrant from url' do
  checksum node['vagrant']['checksum']
  url node['vagrant']['url']
  version node['vagrant']['checksum']
end

vagrant_plugin

Actions

  • :install: installs the specified plugin. Default.
  • :uninstall: uninstalls the specified plugin
  • :remove: uninstalls the specified plugin

Properties

  • :plugin_name: name attribute, the name of the plugin, e.g. "vagrant-omnibus".
  • :version: version of the plugin to installed, must be specified as a string, e.g., "1.0.2"
  • :user: a user to run plugin installation as. Usually this is for single user systems (like workstations).
  • :sources: alternate locations to search for plugins. This would commonly be used if you are hosting your vagrant plugins in a custom gem repo

Examples

vagrant_plugin 'vagrant-omnibus'

vagrant_plugin 'vagrant-berkshelf'
  version '1.2.0'
  sources ['http://src1.example.com', 'http://src2.example.com']
end

# Install the plugins as the `donuts` user, into ~/donuts/.vagrant.d
vagrant_plugin 'vagrant-aws'
  user 'donuts'
end

# Install the 'vagrant-winrm' plugin for another user. Windows impersonation
# requires a username and password.
vagrant_plugin 'vagrant-winrm' do
  user node['vagrant']['user']
  password node['vagrant']['password']
end

ChefSpec Matchers

This cookbook provides ChefSpec Custom Matchers for vagrant_plugin. Matchers are automatically generated by current versions of ChefSpec. The provided matchers will be removed in a future version of the vagrant cookbook.

Example:

RSpec.describe 'example::default' do
  let(:chef_run) { ChefSpec::SoloRunner.converge(described_recipe) }

  it 'installs the vagrant-omnibus plugin' do
    expect(chef_run).to install_vagrant_plugin('vagrant-omnibus').with(
      user: 'my_user'
    )
  end
end

Recipes

default

The default recipe uses the vagrant resource to install Vagrant. OS specific code is in the install custom resource. If the node['vagrant']['plugins'] attribute is not empty, it includes the install_plugins recipe to install any required vagrant plugins.

install_plugins

Iterates over the node['vagrant']['plugins'] attribute and installs the listed plugins. If that attribute is a hash, it installs the specified plugin version. If the node['vagrant']['user'] attribute is set, the plugins are installed for only that user.

uninstall_gem

This recipe will attempt to uninstall the vagrant gem with the gem_package and chef_gem resources. Meaning, it will use the gem binary in the PATH of the shell executing Chef to uninstall, and then use Chef's built-in RubyGems to uninstall. If you have a customized Ruby environment, such as with rbenv or rvm (or other), you may need to manually remove and clean up anything leftover, such as running rbenv rehash. Likewise, if you have multiple copies of the vagrant gem installed, you'll need to clean up all versions. This recipe won't support such craziness :-).

Usage

Set the url and checksum attributes on the node. Do this in a role, or a "wrapper" cookbook. Or, just set the version and let the magic happen.

Then include the default recipe on the node's run list.

To specify plugins for installation in the default recipe, specify an array for the node['vagrant']['plugins'] attribute. For example, to install the vagrant-omnibus plugin (any version) and version "1.2.0" of the vagrant-berkshelf plugin:

node.set['vagrant']['plugins'] = [
  'vagrant-omnibus',
  {name: 'vagrant-berkshelf', version: '1.2.0'}
]

See the attribute tables above.

License and Authors

  • Author:: Joshua Timberman
  • Author:: Doug Ireton
  • Author:: Mark Gibbons
  • Author:: Sous Chefs help@sous-chefs.org
  • Copyright (c) 2013-2014, Joshua Timberman
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

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Vagrant Cookbook Changelog

0.9.1

  • Update the README to describe the new vagrant resource

0.9.0

  • Create a custom resource to install vagrant. Fix issue #69

0.8.1

  • Change the source respository name
  • Add the authorize_service resource for setting up windows testing
  • Use environment variable VAGRANT_HOME as the location to install plugins

0.8.0

  • Add tests for chef-client 14
  • Drop testing for chef-client 12
  • Fix the calculation of the plugin directory location
  • Fixes for Windows 2012R2:
    • The Vagrant installer needs to reboot windows, but the MSI does this in a way that chef can't handle. As an alternative, we make chef interrupt itself and reboot the instance.
    • Related to the above, the MSI returns two specific exit codes when it finishes (but not 0...) that chef needs to know about.
    • Testing windows requires user 'vagrant' to hold the 'Replace a process level token' and 'Adjust Memory Quotas for a process' permissions. At the moment those setting must be made using the secpol.msc interface. A furtur task is to configure the vagrant user via the test cookbook.
    • Vagrant version 1.9.7 suffers from the issue described in #82 (Expected process to exit with [0], but received '-1073741515'). For unknown reasons, this problem is resolved by using 2.0.3 (Perhaps also earlier versions, but they were not tested.)

0.7.2

  • The package extension for the vagrant mac package changed. After version 1.9.2 the extension is _x86_64.dmg.
  • The package extension for the vagrant windows package changed. After version 1.9.5 the extension is <machinetype>.msi.
  • Added support for amazon linux
  • Make the inspec tests run. Move them to the correct directories.

0.7.1

  • Fixes for Chef 13 compat
  • Install Vagrant 1.9.7 by default

0.7.0

  • Fix #67: Remove depends constraint on Windows 1.x cookbook.

0.6.0

  • Install Vagrant 1.8.5 by default

0.5.0

  • Install Vagrant 1.8.1 by default
  • Switch to InSpec verifier for test-kitchen

0.4.2 - January 7, 2016

  • Fix regression in fetch_platform_checksums_for_version method. Release 0.4.1 changed the checksums URL to the new Hashicorp location and introduced a regression. The fetch_platform_checksums_for_version method now returns the correct URL.

Thanks to Jeff Bachtel for the PR.

0.4.1 - January 6, 2016

  • Hashicorp has moved Vagrant package downloads from bintray.com to hashicorp.com. Download Vagrant packages from new location.

0.4.0 - December 21, 2015

  • Bump default Vagrant version to 1.7.4
  • Cookbook no longer fails during compile phase if https://dl.bintray.com is unavailable. You can override node['vagrant']['url'] and node['vagrant']['checksum'] if you need to download Vagrant from a different location.
  • Fix idempotency when installing Vagrant Windows package.
  • Refactor Vagrant::Helpers and add test coverage
  • vagrant_plugin resource correctly installs vagrant plugins as another user on Windows.
  • Refactor LWRP and add unit tests.

Dev environment changes

  • Add ChefSpec Custom Matchers for vagrant_plugin.
  • Add Rakefile for testing/style checks.
  • Add Travis-CI integration for style and unit tests
  • Move vagrant_sha256sum mock to spec/support/shared_context.rb
  • Refactor ChefSpec tests - move platform recipe specs into their own spec files

0.3.1:

  • #25, #31 Don't evaluate attributes on unsupported platforms

0.3.0:

  • #11 Custom plugin sources
  • #14 Implement user-specific plugin installation
  • #20, #21, Fix plugin version detection
  • #28 Improve cross platform support

0.2.2:

  • Fix platform_family, redhat is not a family, rhel is. (#18)

0.2.0:

  • Add uninstall_gem recipe to remove vagrant (1.0) gem.

0.1.1:

  • Initial release of vagrant

Collaborator Number Metric
            

0.9.1 passed this metric

Contributing File Metric
            

0.9.1 passed this metric

Foodcritic Metric
            

0.9.1 passed this metric

No Binaries Metric
            

0.9.1 passed this metric

Publish Metric
            

0.9.1 passed this metric

Supported Platforms Metric
            

0.9.1 passed this metric

Testing File Metric
            

0.9.1 passed this metric

Version Tag Metric
            

0.9.1 passed this metric