» Chef Apply Provisioner

Provisioner name: chef_apply

The Vagrant Chef Apply provisioner allows you to provision the guest usingChef, specifically withChef Apply.

Chef Apply is ideal for people who are already experienced with Chef and theChef ecosystem. Specifically, this documentation page does not cover how useChef or how to write Chef recipes.

Warning: If you are not familiar with Chef and Vagrant already,we recommend starting with the shellprovisioner.

» Options

This section lists the complete set of available options for the Chef Applyprovisioner. More detailed examples of how to use the provisioner areavailable below this section.

  • recipe (string) - The raw recipe contents to execute using Chef Apply onthe guest.

  • log_level (string) - The log level to use while executing chef-apply. Thedefault value is "info".

  • upload_path (string) - Advanced! The location on the guest where thegenerated recipe file should be stored. For most use cases, it is unlikely youwill need to customize this value. The default value is/tmp/vagrant-chef-apply-# where # is a unique counter generated byVagrant to prevent collisions.

In addition to all the options listed above, the Chef Apply provisioner supportsthe common options for all Chef provisioners.

» Specifying a Recipe

The easiest way to get started with the Chef Apply provisioner is to justspecify an inlineChef recipe. Forexample:

  1. Vagrant.configure("2") do |config|
  2. config.vm.provision "chef_apply" do |chef|
  3. chef.recipe = "package[apache2]"
  4. end
  5. end

This causes Vagrant to run Chef Apply with the given recipe contents. If you arefamiliar with Chef, you know this will install the apache2 package from thesystem package provider.

Since single-line Chef recipes are rare, you can also specify the recipe using a"heredoc":

  1. Vagrant.configure("2") do |config|
  2. config.vm.provision "chef_apply" do |chef|
  3. chef.recipe = <<-RECIPE
  4. package "apache2"
  5. template "/etc/apache2/my.config" do
  6. # ...
  7. end
  8. RECIPE
  9. end
  10. end

Finally, if you would prefer to store the recipe as plain-text, you can set therecipe to the contents of a file:

  1. Vagrant.configure("2") do |config|
  2. config.vm.provision "chef_apply" do |chef|
  3. chef.recipe = File.read("/path/to/my/recipe.rb")
  4. end
  5. end

» Roles

The Vagrant Chef Apply provisioner does not support roles. Please use adifferent Vagrant Chef provisioner if you need support for roles.

» Data Bags

The Vagrant Chef Apply provisioner does not support data_bags. Please use adifferent Vagrant Chef provisioner if you need support for data_bags.