tnargav 1.2.3 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +19 -3
- data/CHANGELOG.md +311 -0
- data/bin/vagrant +12 -0
- data/config/default.rb +2 -4
- data/keys/README.md +0 -7
- data/lib/vagrant.rb +7 -0
- data/lib/vagrant/action.rb +2 -0
- data/lib/vagrant/action/builtin/box_add.rb +12 -1
- data/lib/vagrant/action/builtin/confirm.rb +1 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +9 -5
- data/lib/vagrant/action/builtin/handle_box_url.rb +16 -7
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +1 -1
- data/lib/vagrant/action/builtin/mixin_provisioners.rb +43 -0
- data/lib/vagrant/action/builtin/nfs.rb +18 -8
- data/lib/vagrant/action/builtin/provision.rb +30 -21
- data/lib/vagrant/action/builtin/provisioner_cleanup.rb +35 -0
- data/lib/vagrant/action/builtin/wait_for_communicator.rb +84 -0
- data/lib/vagrant/action/warden.rb +2 -1
- data/lib/vagrant/box_collection.rb +62 -44
- data/lib/vagrant/cli.rb +1 -9
- data/lib/vagrant/config/v2/root.rb +6 -0
- data/lib/vagrant/environment.rb +27 -51
- data/lib/vagrant/errors.rb +33 -1
- data/lib/vagrant/guest.rb +2 -2
- data/lib/vagrant/machine.rb +14 -22
- data/lib/vagrant/plugin/v2/command.rb +4 -1
- data/lib/vagrant/plugin/v2/communicator.rb +21 -0
- data/lib/vagrant/plugin/v2/guest.rb +1 -56
- data/lib/vagrant/plugin/v2/provisioner.rb +6 -0
- data/lib/vagrant/util/downloader.rb +7 -2
- data/lib/vagrant/util/platform.rb +43 -0
- data/lib/vagrant/util/ssh.rb +5 -0
- data/lib/vagrant/util/subprocess.rb +16 -2
- data/lib/vagrant/version.rb +1 -1
- data/plugins/commands/box/command/remove.rb +22 -2
- data/plugins/commands/box/command/repackage.rb +1 -1
- data/plugins/commands/destroy/command.rb +8 -3
- data/plugins/commands/help/command.rb +12 -0
- data/plugins/commands/help/plugin.rb +17 -0
- data/plugins/commands/plugin/action.rb +11 -0
- data/plugins/commands/plugin/action/install_gem.rb +26 -1
- data/plugins/commands/plugin/action/plugin_exists_check.rb +26 -0
- data/plugins/commands/plugin/command/install.rb +4 -21
- data/plugins/commands/plugin/command/mixin_install_opts.rb +30 -0
- data/plugins/commands/plugin/command/root.rb +5 -0
- data/plugins/commands/plugin/command/update.rb +41 -0
- data/plugins/commands/reload/command.rb +4 -0
- data/plugins/commands/status/command.rb +6 -1
- data/plugins/commands/up/command.rb +10 -0
- data/plugins/commands/up/start_mixins.rb +12 -1
- data/plugins/communicators/ssh/communicator.rb +61 -6
- data/plugins/guests/arch/cap/change_host_name.rb +1 -2
- data/plugins/guests/arch/cap/configure_networks.rb +6 -0
- data/plugins/guests/coreos/cap/change_host_name.rb +15 -0
- data/plugins/guests/coreos/cap/configure_networks.rb +72 -0
- data/plugins/guests/coreos/guest.rb +9 -0
- data/plugins/guests/coreos/plugin.rb +25 -0
- data/plugins/guests/darwin/cap/change_host_name.rb +14 -0
- data/plugins/guests/darwin/cap/configure_networks.rb +52 -0
- data/plugins/guests/darwin/cap/halt.rb +16 -0
- data/plugins/guests/darwin/cap/mount_nfs_folder.rb +25 -0
- data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +36 -0
- data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +12 -0
- data/plugins/guests/darwin/guest.rb +15 -0
- data/plugins/guests/darwin/plugin.rb +50 -0
- data/plugins/guests/debian/cap/change_host_name.rb +1 -0
- data/plugins/guests/gentoo/guest.rb +1 -1
- data/plugins/guests/linux/cap/mount_nfs.rb +9 -1
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +26 -7
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +4 -1
- data/plugins/guests/openbsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/openbsd/cap/configure_networks.rb +40 -0
- data/plugins/guests/openbsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/openbsd/plugin.rb +15 -0
- data/plugins/guests/solaris/cap/halt.rb +2 -1
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +4 -1
- data/plugins/guests/solaris11/cap/change_host_name.rb +25 -0
- data/plugins/guests/solaris11/cap/configure_networks.rb +32 -0
- data/plugins/guests/solaris11/cap/halt.rb +26 -0
- data/plugins/guests/solaris11/cap/mount_virtualbox_shared_folder.rb +35 -0
- data/plugins/guests/solaris11/config.rb +22 -0
- data/plugins/guests/solaris11/guest.rb +15 -0
- data/plugins/guests/solaris11/plugin.rb +44 -0
- data/plugins/guests/suse/cap/configure_networks.rb +60 -0
- data/plugins/guests/suse/plugin.rb +5 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +1 -0
- data/plugins/guests/ubuntu/cap/mount_nfs.rb +19 -0
- data/plugins/guests/ubuntu/cap/mount_virtualbox_shared_folder.rb +14 -0
- data/plugins/guests/ubuntu/guest.rb +0 -19
- data/plugins/guests/ubuntu/plugin.rb +10 -0
- data/plugins/hosts/arch/host.rb +5 -28
- data/plugins/hosts/bsd/host.rb +83 -7
- data/plugins/hosts/fedora/host.rb +12 -6
- data/plugins/hosts/gentoo/host.rb +3 -1
- data/plugins/hosts/linux/host.rb +42 -9
- data/plugins/hosts/opensuse/host.rb +3 -1
- data/plugins/hosts/slackware/host.rb +26 -0
- data/plugins/hosts/slackware/plugin.rb +15 -0
- data/plugins/kernel_v1/config/ssh.rb +2 -2
- data/plugins/kernel_v2/config/ssh.rb +8 -16
- data/plugins/kernel_v2/config/vm.rb +68 -11
- data/plugins/providers/virtualbox/action.rb +15 -2
- data/plugins/providers/virtualbox/action/boot.rb +0 -26
- data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +1 -1
- data/plugins/providers/virtualbox/action/customize.rb +10 -3
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +8 -1
- data/plugins/providers/virtualbox/action/forward_ports.rb +1 -0
- data/plugins/providers/virtualbox/action/import.rb +3 -0
- data/plugins/providers/virtualbox/action/network.rb +14 -2
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +7 -2
- data/plugins/providers/virtualbox/action/set_name.rb +13 -1
- data/plugins/providers/virtualbox/config.rb +39 -2
- data/plugins/providers/virtualbox/driver/base.rb +5 -0
- data/plugins/providers/virtualbox/driver/meta.rb +7 -1
- data/plugins/providers/virtualbox/driver/version_4_0.rb +2 -2
- data/plugins/providers/virtualbox/driver/version_4_1.rb +2 -2
- data/plugins/providers/virtualbox/driver/version_4_2.rb +17 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +7 -1
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +5 -1
- data/plugins/provisioners/ansible/config.rb +40 -23
- data/plugins/provisioners/ansible/provisioner.rb +68 -13
- data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +1 -1
- data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +1 -1
- data/plugins/provisioners/cfengine/config.rb +7 -1
- data/plugins/provisioners/cfengine/provisioner.rb +4 -5
- data/plugins/provisioners/chef/config/base.rb +31 -0
- data/plugins/provisioners/chef/config/chef_client.rb +15 -6
- data/plugins/provisioners/chef/config/chef_solo.rb +18 -11
- data/plugins/provisioners/chef/provisioner/base.rb +23 -3
- data/plugins/provisioners/chef/provisioner/chef_client.rb +25 -6
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +16 -13
- data/plugins/provisioners/file/config.rb +29 -0
- data/plugins/provisioners/file/plugin.rb +23 -0
- data/plugins/provisioners/file/provisioner.rb +16 -0
- data/plugins/provisioners/puppet/config/puppet.rb +4 -1
- data/plugins/provisioners/puppet/provisioner/puppet.rb +15 -9
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +9 -2
- data/plugins/provisioners/salt/bootstrap-salt.sh +6 -0
- data/plugins/provisioners/salt/config.rb +105 -0
- data/plugins/provisioners/salt/errors.rb +11 -0
- data/plugins/provisioners/salt/plugin.rb +22 -0
- data/plugins/provisioners/salt/provisioner.rb +249 -0
- data/plugins/provisioners/shell/config.rb +11 -2
- data/plugins/provisioners/shell/provisioner.rb +15 -3
- data/scripts/website_push_docs.sh +12 -0
- data/scripts/website_push_www.sh +12 -0
- data/templates/commands/init/Vagrantfile.erb +5 -2
- data/templates/commands/ssh_config/config.erb +4 -0
- data/templates/guests/coreos/etcd.service.erb +10 -0
- data/templates/guests/fedora/network_static.erb +2 -3
- data/templates/guests/openbsd/network_dhcp.erb +1 -0
- data/templates/guests/openbsd/network_static.erb +1 -0
- data/templates/guests/suse/network_dhcp.erb +6 -0
- data/templates/guests/suse/network_static.erb +10 -0
- data/templates/locales/en.yml +123 -13
- data/templates/nfs/exports.erb +4 -4
- data/templates/nfs/exports_freebsd.erb +4 -4
- data/templates/nfs/exports_linux.erb +5 -3
- data/templates/provisioners/chef_client/client.erb +9 -0
- data/templates/provisioners/chef_solo/solo.erb +19 -1
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +1 -2
- data/test/unit/vagrant/cli_test.rb +1 -0
- data/test/unit/vagrant/config/v2/root_test.rb +18 -0
- data/test/unit/vagrant/environment_test.rb +25 -0
- data/test/unit/vagrant/util/downloader_test.rb +4 -4
- data/test/unit/vagrant_test.rb +18 -0
- data/website/docs/.buildpacks +2 -0
- data/website/docs/Gemfile +13 -0
- data/website/docs/Gemfile.lock +141 -0
- data/website/docs/Procfile +1 -0
- data/website/docs/README.md +26 -0
- data/website/docs/config.rb +78 -0
- data/website/docs/config.ru +44 -0
- data/website/docs/helpers/sidebar_helpers.rb +19 -0
- data/website/docs/lib/redirect_to_latest.rb +25 -0
- data/website/docs/lib/redirect_v1_docs.rb +26 -0
- data/website/docs/source/404.html.erb +7 -0
- data/website/docs/source/images/bullet_1.png +0 -0
- data/website/docs/source/images/bullet_2.png +0 -0
- data/website/docs/source/images/bullet_3.png +0 -0
- data/website/docs/source/images/customers.png +0 -0
- data/website/docs/source/images/customers_small.png +0 -0
- data/website/docs/source/images/footer_background.png +0 -0
- data/website/docs/source/images/footer_hashi_logo.png +0 -0
- data/website/docs/source/images/footer_vagrant_logo.png +0 -0
- data/website/docs/source/images/get_started_background.png +0 -0
- data/website/docs/source/images/icon_caution.png +0 -0
- data/website/docs/source/images/logo_docs.png +0 -0
- data/website/docs/source/images/logo_docs_small.png +0 -0
- data/website/docs/source/images/logo_small.png +0 -0
- data/website/docs/source/images/logo_vagrant.png +0 -0
- data/website/docs/source/images/open_close.png +0 -0
- data/website/docs/source/images/search_icon.png +0 -0
- data/website/docs/source/images/sidebar_background_docs.png +0 -0
- data/website/docs/source/images/sidebar_background_inner.png +0 -0
- data/website/docs/source/images/steps_background.png +0 -0
- data/website/docs/source/images/vagrant_header_background.png +0 -0
- data/website/docs/source/index.html.erb +0 -0
- data/website/docs/source/javascripts/backstretch.js +4 -0
- data/website/docs/source/javascripts/bootstrap.min.js +7 -0
- data/website/docs/source/javascripts/fittext.js +43 -0
- data/website/docs/source/javascripts/grid-overlay.js +161 -0
- data/website/docs/source/javascripts/jquery.js +2 -0
- data/website/docs/source/javascripts/less-1.3.0.min.js +9 -0
- data/website/docs/source/javascripts/modernizr.js +1384 -0
- data/website/docs/source/javascripts/vagrantup.js +15 -0
- data/website/docs/source/layouts/layout.erb +266 -0
- data/website/docs/source/stylesheets/_base.less +317 -0
- data/website/docs/source/stylesheets/_components.less +74 -0
- data/website/docs/source/stylesheets/_footer.less +101 -0
- data/website/docs/source/stylesheets/_media-queries.less +452 -0
- data/website/docs/source/stylesheets/_mixins.less +174 -0
- data/website/docs/source/stylesheets/_nav.less +71 -0
- data/website/docs/source/stylesheets/_pages.less +276 -0
- data/website/docs/source/stylesheets/_sidebar.less +136 -0
- data/website/docs/source/stylesheets/_type.less +36 -0
- data/website/docs/source/stylesheets/_variables.less +39 -0
- data/website/docs/source/stylesheets/bootstrap.css +5946 -0
- data/website/docs/source/stylesheets/vagrantup.less +16 -0
- data/website/docs/source/v2/boxes.html.md +78 -0
- data/website/docs/source/v2/boxes/format.html.md +32 -0
- data/website/docs/source/v2/cli/box.html.md +62 -0
- data/website/docs/source/v2/cli/destroy.html.md +20 -0
- data/website/docs/source/v2/cli/halt.html.md +19 -0
- data/website/docs/source/v2/cli/index.html.md +24 -0
- data/website/docs/source/v2/cli/init.html.md +18 -0
- data/website/docs/source/v2/cli/package.html.md +43 -0
- data/website/docs/source/v2/cli/plugin.html.md +56 -0
- data/website/docs/source/v2/cli/provision.html.md +24 -0
- data/website/docs/source/v2/cli/reload.html.md +27 -0
- data/website/docs/source/v2/cli/resume.html.md +11 -0
- data/website/docs/source/v2/cli/ssh.html.md +24 -0
- data/website/docs/source/v2/cli/ssh_config.html.md +16 -0
- data/website/docs/source/v2/cli/status.html.md +14 -0
- data/website/docs/source/v2/cli/suspend.html.md +19 -0
- data/website/docs/source/v2/cli/up.html.md +34 -0
- data/website/docs/source/v2/debugging.html.md +42 -0
- data/website/docs/source/v2/getting-started/boxes.html.md +56 -0
- data/website/docs/source/v2/getting-started/index.html.md +43 -0
- data/website/docs/source/v2/getting-started/networking.html.md +45 -0
- data/website/docs/source/v2/getting-started/project_setup.html.md +38 -0
- data/website/docs/source/v2/getting-started/providers.html.md +37 -0
- data/website/docs/source/v2/getting-started/provisioning.html.md +75 -0
- data/website/docs/source/v2/getting-started/rebuild.html.md +17 -0
- data/website/docs/source/v2/getting-started/synced_folders.html.md +42 -0
- data/website/docs/source/v2/getting-started/teardown.html.md +41 -0
- data/website/docs/source/v2/getting-started/up.html.md +35 -0
- data/website/docs/source/v2/index.html.md +10 -0
- data/website/docs/source/v2/installation/backwards-compatibility.html.md +35 -0
- data/website/docs/source/v2/installation/index.html.md +28 -0
- data/website/docs/source/v2/installation/uninstallation.html.md +39 -0
- data/website/docs/source/v2/installation/upgrading-from-1-0.html.md +26 -0
- data/website/docs/source/v2/installation/upgrading.html.md +20 -0
- data/website/docs/source/v2/multi-machine/index.html.md +105 -0
- data/website/docs/source/v2/networking/basic_usage.html.md +43 -0
- data/website/docs/source/v2/networking/forwarded_ports.html.md +57 -0
- data/website/docs/source/v2/networking/index.html.md +40 -0
- data/website/docs/source/v2/networking/private_network.html.md +48 -0
- data/website/docs/source/v2/networking/public_network.html.md +53 -0
- data/website/docs/source/v2/plugins/commands.html.md +116 -0
- data/website/docs/source/v2/plugins/configuration.html.md +166 -0
- data/website/docs/source/v2/plugins/development-basics.html.md +139 -0
- data/website/docs/source/v2/plugins/guest-capabilities.html.md +100 -0
- data/website/docs/source/v2/plugins/guests.html.md +99 -0
- data/website/docs/source/v2/plugins/hosts.html.md +46 -0
- data/website/docs/source/v2/plugins/index.html.md +21 -0
- data/website/docs/source/v2/plugins/packaging.html.md +102 -0
- data/website/docs/source/v2/plugins/providers.html.md +234 -0
- data/website/docs/source/v2/plugins/provisioners.html.md +64 -0
- data/website/docs/source/v2/plugins/usage.html.md +58 -0
- data/website/docs/source/v2/providers/basic_usage.html.md +67 -0
- data/website/docs/source/v2/providers/configuration.html.md +89 -0
- data/website/docs/source/v2/providers/custom.html.md +9 -0
- data/website/docs/source/v2/providers/default.html.md +22 -0
- data/website/docs/source/v2/providers/index.html.md +23 -0
- data/website/docs/source/v2/providers/installation.html.md +11 -0
- data/website/docs/source/v2/provisioning/ansible.html.md +144 -0
- data/website/docs/source/v2/provisioning/basic_usage.html.md +67 -0
- data/website/docs/source/v2/provisioning/chef_client.html.md +109 -0
- data/website/docs/source/v2/provisioning/chef_solo.html.md +156 -0
- data/website/docs/source/v2/provisioning/index.html.md +28 -0
- data/website/docs/source/v2/provisioning/puppet_agent.html.md +70 -0
- data/website/docs/source/v2/provisioning/puppet_apply.html.md +114 -0
- data/website/docs/source/v2/provisioning/shell.html.md +88 -0
- data/website/docs/source/v2/synced-folders/basic_usage.html.md +53 -0
- data/website/docs/source/v2/synced-folders/index.html.md +17 -0
- data/website/docs/source/v2/synced-folders/nfs.html.md +53 -0
- data/website/docs/source/v2/vagrantfile/index.html.md +75 -0
- data/website/docs/source/v2/vagrantfile/machine_settings.html.md +84 -0
- data/website/docs/source/v2/vagrantfile/ssh_settings.html.md +61 -0
- data/website/docs/source/v2/vagrantfile/vagrant_settings.html.md +19 -0
- data/website/docs/source/v2/vagrantfile/version.html.md +64 -0
- data/website/docs/source/v2/virtualbox/boxes.html.md +71 -0
- data/website/docs/source/v2/virtualbox/configuration.html.md +63 -0
- data/website/docs/source/v2/virtualbox/index.html.md +21 -0
- data/website/docs/source/v2/virtualbox/usage.html.md +12 -0
- data/website/docs/source/v2/vmware/boxes.html.md +107 -0
- data/website/docs/source/v2/vmware/configuration.html.md +91 -0
- data/website/docs/source/v2/vmware/index.html.md +30 -0
- data/website/docs/source/v2/vmware/installation.html.md +40 -0
- data/website/docs/source/v2/vmware/known-issues.html.md +21 -0
- data/website/docs/source/v2/vmware/usage.html.md +27 -0
- data/website/docs/source/v2/why-vagrant/index.html.md +46 -0
- data/website/www/.buildpacks +2 -0
- data/website/www/Gemfile +15 -0
- data/website/www/Gemfile.lock +123 -0
- data/website/www/Procfile +1 -0
- data/website/www/README.md +26 -0
- data/website/www/config.rb +88 -0
- data/website/www/config.ru +39 -0
- data/website/www/helpers/sidebar_helpers.rb +12 -0
- data/website/www/lib/legacy_redirect.rb +32 -0
- data/website/www/source/404.html.erb +11 -0
- data/website/www/source/_sidebar_about.erb +5 -0
- data/website/www/source/_sidebar_blog.erb +11 -0
- data/website/www/source/_sidebar_support.html.erb +6 -0
- data/website/www/source/about.html.markdown +16 -0
- data/website/www/source/blog.html.erb +34 -0
- data/website/www/source/blog/2013-09-16-test.html.markdown +26 -0
- data/website/www/source/blog_feed.xml.builder +23 -0
- data/website/www/source/images/bullet_1.png +0 -0
- data/website/www/source/images/bullet_2.png +0 -0
- data/website/www/source/images/bullet_3.png +0 -0
- data/website/www/source/images/customers.png +0 -0
- data/website/www/source/images/customers_small.png +0 -0
- data/website/www/source/images/footer_background.png +0 -0
- data/website/www/source/images/footer_hashi_logo.png +0 -0
- data/website/www/source/images/footer_vagrant_logo.png +0 -0
- data/website/www/source/images/get_started_background.png +0 -0
- data/website/www/source/images/icon_caution.png +0 -0
- data/website/www/source/images/logo_docs.png +0 -0
- data/website/www/source/images/logo_docs_small.png +0 -0
- data/website/www/source/images/logo_small.png +0 -0
- data/website/www/source/images/logo_vagrant.png +0 -0
- data/website/www/source/images/open_close.png +0 -0
- data/website/www/source/images/search_icon.png +0 -0
- data/website/www/source/images/sidebar_background_docs.png +0 -0
- data/website/www/source/images/sidebar_background_inner.png +0 -0
- data/website/www/source/images/sponsors/fastly.png +0 -0
- data/website/www/source/images/sponsors/kiip.png +0 -0
- data/website/www/source/images/sponsors/softlayer.jpg +0 -0
- data/website/www/source/images/sponsors/typekit.png +0 -0
- data/website/www/source/images/steps_background.png +0 -0
- data/website/www/source/images/vagrant_header_background.png +0 -0
- data/website/www/source/images/vagrant_vmware_background.png +0 -0
- data/website/www/source/index.html.erb +109 -0
- data/website/www/source/javascripts/backstretch.js +4 -0
- data/website/www/source/javascripts/bootstrap.min.js +7 -0
- data/website/www/source/javascripts/fittext.js +43 -0
- data/website/www/source/javascripts/grid-overlay.js +161 -0
- data/website/www/source/javascripts/jquery.js +2 -0
- data/website/www/source/javascripts/less-1.3.0.min.js +9 -0
- data/website/www/source/javascripts/modernizr.js +1384 -0
- data/website/www/source/javascripts/vagrantup.js +58 -0
- data/website/www/source/layouts/blog_post.erb +42 -0
- data/website/www/source/layouts/inner.erb +34 -0
- data/website/www/source/layouts/layout.erb +107 -0
- data/website/www/source/sponsors.html.erb +23 -0
- data/website/www/source/stylesheets/_base.less +326 -0
- data/website/www/source/stylesheets/_components.less +74 -0
- data/website/www/source/stylesheets/_footer.less +101 -0
- data/website/www/source/stylesheets/_media-queries.less +549 -0
- data/website/www/source/stylesheets/_mixins.less +175 -0
- data/website/www/source/stylesheets/_modules.less +37 -0
- data/website/www/source/stylesheets/_nav.less +74 -0
- data/website/www/source/stylesheets/_pages.less +467 -0
- data/website/www/source/stylesheets/_sidebar.less +137 -0
- data/website/www/source/stylesheets/_type.less +36 -0
- data/website/www/source/stylesheets/_variables.less +39 -0
- data/website/www/source/stylesheets/bootstrap.css +5946 -0
- data/website/www/source/stylesheets/vagrantup.less +17 -0
- data/website/www/source/support.html.erb +25 -0
- data/website/www/source/support/community.html.erb +28 -0
- data/website/www/source/support/professional.html.erb +17 -0
- data/website/www/source/vmware/eula.html.md +21 -0
- data/website/www/source/vmware/index.html.erb +185 -0
- data/website/www/source/vmware/privacy-policy.html.md +71 -0
- data/website/www/source/vmware/terms-of-service.html.md +50 -0
- metadata +436 -186
@@ -0,0 +1,234 @@
|
|
1
|
+
---
|
2
|
+
page_title: "Custom Providers - Plugin Development"
|
3
|
+
sidebar_current: "plugins-providers"
|
4
|
+
---
|
5
|
+
|
6
|
+
# Plugin Development: Providers
|
7
|
+
|
8
|
+
This page documents how to add support for new [providers](/v2/providers/index.html)
|
9
|
+
to Vagrant, allowing Vagrant to run and manage machines powered by a
|
10
|
+
system other than VirtualBox. Prior to reading this, you should be familiar
|
11
|
+
with the [plugin development basics](/v2/plugins/development-basics.html).
|
12
|
+
|
13
|
+
Prior to developing a provider you should also be familiar with how
|
14
|
+
[providers work](/v2/providers/index.html) from
|
15
|
+
a user standpoint.
|
16
|
+
|
17
|
+
<div class="alert alert-warn">
|
18
|
+
<p>
|
19
|
+
<strong>Warning: Advanced Topic!</strong> Developing plugins is an
|
20
|
+
advanced topic that only experienced Vagrant users who are reasonably
|
21
|
+
comfortable with Ruby should approach.
|
22
|
+
</p>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
## Example Provider: AWS
|
26
|
+
|
27
|
+
The best way to learn how to write a provider is to see how one is
|
28
|
+
written in practice. To augment this documentation, please heavily
|
29
|
+
study the [vagrant-aws](https://github.com/mitchellh/vagrant-aws) plugin,
|
30
|
+
which implements an AWS provider. The plugin is a good example of how to
|
31
|
+
structure, test, and implement your plugin.
|
32
|
+
|
33
|
+
## Definition Component
|
34
|
+
|
35
|
+
Within the context of a plugin definition, new providers are defined
|
36
|
+
like so:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
provider "my_cloud" do
|
40
|
+
require_relative "provider"
|
41
|
+
Provider
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
Providers are defined with the `provider` method, which takes a single
|
46
|
+
argument specifying the name of the provider. This is the name that is
|
47
|
+
used with `vagrant up` to specify the provider. So in the case above,
|
48
|
+
our provider would be used by calling `vagrant up --provider=my_cloud`.
|
49
|
+
|
50
|
+
The block argument then lazily loads and returns a class that
|
51
|
+
implements the `Vagrant.plugin(2, :provider)` interface, which is covered
|
52
|
+
next.
|
53
|
+
|
54
|
+
## Provider Class
|
55
|
+
|
56
|
+
The provider class should subclass and implement
|
57
|
+
`Vagrant.plugin(2, :provider)` which is an upgrade-safe way to let Vagrant
|
58
|
+
return the proper parent class.
|
59
|
+
|
60
|
+
This class and the methods that need to be implemented are
|
61
|
+
[very well documented](https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/plugin/v2/provider.rb). The documentation done on the class in the comments should be
|
62
|
+
enough to understand what needs to be done.
|
63
|
+
|
64
|
+
Viewing the [AWS provider class](https://github.com/mitchellh/vagrant-aws/blob/master/lib/vagrant-aws/provider.rb) as well as the
|
65
|
+
[overall structure of the plugin](https://github.com/mitchellh/vagrant-aws) is recommended as a strong getting started point.
|
66
|
+
|
67
|
+
Instead of going in depth over each method that needs to be implemented,
|
68
|
+
the documentation will cover high-level but important points to help you
|
69
|
+
create your provider.
|
70
|
+
|
71
|
+
## Box Format
|
72
|
+
|
73
|
+
Each provider is responsible for having its own box format. This is
|
74
|
+
actually an extremely simple step due to how generic boxes are. Before
|
75
|
+
explaining you should get familiar with the general
|
76
|
+
[box file format](/v2/boxes/format.html).
|
77
|
+
|
78
|
+
The only requirement for your box format is that the `metadata.json`
|
79
|
+
file have a `provider` key which matches the name of your provider you
|
80
|
+
chose above.
|
81
|
+
|
82
|
+
In addition to this, you may put any data in the metadata as well
|
83
|
+
as any files in the archive. Since Vagrant core itself doesn't care,
|
84
|
+
it is up to your provider to handle the data of the box. Vagrant core
|
85
|
+
just handles unpacking and verifying the box is for the proper
|
86
|
+
provider.
|
87
|
+
|
88
|
+
As an example of a couple box formats that are actually in use:
|
89
|
+
|
90
|
+
* The `virtualbox` box format is just a flat directory of the contents
|
91
|
+
of a `VBoxManage export` command.
|
92
|
+
|
93
|
+
* The `vmware_fusion` box format is just a flat directory of the
|
94
|
+
contents of a `vmwarevm` folder, but only including the bare essential
|
95
|
+
files for VMware to function.
|
96
|
+
|
97
|
+
* The `aws` box format is just a Vagrantfile defaulting some configuration.
|
98
|
+
You can see an [example aws box unpacked here](https://github.com/mitchellh/vagrant-aws/tree/master/example_box).
|
99
|
+
|
100
|
+
Before anything with your provider is even written, you can verify
|
101
|
+
your box format works by doing `vagrant box add` with it. When you do
|
102
|
+
a `vagrant box list` you can see what boxes for what providers are installed.
|
103
|
+
|
104
|
+
You do _not need_ the provider plugin installed to add a box for that
|
105
|
+
provider.
|
106
|
+
|
107
|
+
<a name="actions"></a>
|
108
|
+
## Actions
|
109
|
+
|
110
|
+
Probably the most important concept to understand when building a
|
111
|
+
provider is the provider "action" interface. It is the secret sauce that
|
112
|
+
makes providers do the magic they do.
|
113
|
+
|
114
|
+
Actions are built on top of the concept of
|
115
|
+
[middleware](https://github.com/mitchellh/middleware), which
|
116
|
+
allow providers to execute multiple distinct steps, have error recovery
|
117
|
+
mechanics, as well as before/after behaviors, and much more.
|
118
|
+
|
119
|
+
Vagrant core requests specific actions from your provider through the
|
120
|
+
`action` method on your provider class. The full list of actions requested
|
121
|
+
is listed in the comments of that method on the superclass. If your
|
122
|
+
provider doesn't implement a certain action, then Vagrant core will show
|
123
|
+
a friendly error, so don't worry if you miss any, things won't explode
|
124
|
+
or crash spectacularly.
|
125
|
+
|
126
|
+
Take a look at how the VirtualBox provider
|
127
|
+
[uses actions to build up complicated multi-step processes](https://github.com/mitchellh/vagrant/blob/master/plugins/providers/virtualbox/action.rb#L287). The AWS provider [uses a similar process](https://github.com/mitchellh/vagrant-aws/blob/master/lib/vagrant-aws/action.rb).
|
128
|
+
|
129
|
+
## Built-in Middleware
|
130
|
+
|
131
|
+
To assist with common tasks, Vagrant ships with a set of
|
132
|
+
[built-in middleware](https://github.com/mitchellh/vagrant/tree/master/lib/vagrant/action/builtin). Each of the middleware is well commented on the behavior and options
|
133
|
+
for each, and using these built-in middleware is critical to building
|
134
|
+
a well-behaved provider.
|
135
|
+
|
136
|
+
These built-in middleware can be thought of as a standard library for
|
137
|
+
your actions on your provider. The core VirtualBox provider uses these
|
138
|
+
built-in middleware heavily.
|
139
|
+
|
140
|
+
## Persisting State
|
141
|
+
|
142
|
+
In the process of creating and managing a machine, providers generally need
|
143
|
+
to store some sort of state somewhere. Vagrant provides each machine with
|
144
|
+
a directory to store this state.
|
145
|
+
|
146
|
+
As a use-case example for this, the VirtualBox provider stores the UUID
|
147
|
+
of the VirtualBox virtual machine created. This allows the provider to track
|
148
|
+
whether the machine is created, running, suspended, etc.
|
149
|
+
|
150
|
+
The VMware provider actually copies the entire virtual machine into this
|
151
|
+
state directory, complete with virtual disk drives and everything.
|
152
|
+
|
153
|
+
The directory is available from the `data_dir` attribute of the `Machine`
|
154
|
+
instance given to initialize your provider. Within middleware actions, the
|
155
|
+
machine is always available via the `:machine` key on the environment. The
|
156
|
+
`data_dir` attribute is a Ruby [Pathname](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/pathname/rdoc/Pathname.html) object.
|
157
|
+
|
158
|
+
It is important for providers to carefully manage all the contents of
|
159
|
+
this directory. Vagrant core itself does little to clean up this directory.
|
160
|
+
Therefore, when a machine is destroyed, be sure to clean up all the state
|
161
|
+
from this directory.
|
162
|
+
|
163
|
+
## Configuration
|
164
|
+
|
165
|
+
Vagrant supports [provider-specific configuration](/v2/providers/configuration.html),
|
166
|
+
allowing for users to finely tune and control specific providers from
|
167
|
+
Vagrantfiles. It is easy for your custom provider to expose custom configuration
|
168
|
+
as well.
|
169
|
+
|
170
|
+
Provider-specific configuration is a special case of a normal
|
171
|
+
[configuration plugin](/v2/plugins/configuration.html). When defining the
|
172
|
+
configuration component, name the configuration the same as the provider,
|
173
|
+
and as a second parameter, specify `:provider`, like so:
|
174
|
+
|
175
|
+
```
|
176
|
+
config("my_cloud", :provider) do
|
177
|
+
require_relative "config"
|
178
|
+
Config
|
179
|
+
end
|
180
|
+
```
|
181
|
+
|
182
|
+
As long as the name matches your provider, and the second `:provider`
|
183
|
+
parameter is given, Vagrant will automatically expose this as provider-specific
|
184
|
+
configuration for your provider. Users can now do the following in their
|
185
|
+
Vagrantfiles:
|
186
|
+
|
187
|
+
```
|
188
|
+
config.vm.provider :my_cloud do |config|
|
189
|
+
# Your specific configuration!
|
190
|
+
end
|
191
|
+
```
|
192
|
+
|
193
|
+
The configuration class returned from the `config` component in the plugin
|
194
|
+
is the same as any other [configuration plugin](/v2/plugins/configuration.html),
|
195
|
+
so read that page for more information. Vagrant automatically handles
|
196
|
+
configuration validation and such just like any other configuration piece.
|
197
|
+
|
198
|
+
The provider-specific configuration is available on the machine object
|
199
|
+
via the `provider_config` attribute. So within actions or your provider class,
|
200
|
+
you can access the config via `machine.provider_config`.
|
201
|
+
|
202
|
+
<div class="alert alert-info">
|
203
|
+
<p>
|
204
|
+
<strong>Best practice:</strong> Your provider should <em>not require</em>
|
205
|
+
provider-specific configuration to function, if possible. Vagrant
|
206
|
+
practices a strong <a href="http://en.wikipedia.org/wiki/Convention_over_configuration">convention over configuration</a>
|
207
|
+
philosophy. When a user installs your provider, they should ideally
|
208
|
+
be able to <code>vagrant up --provider=your_provider</code> and
|
209
|
+
have it just work.
|
210
|
+
</p>
|
211
|
+
</div>
|
212
|
+
|
213
|
+
## Parallelization
|
214
|
+
|
215
|
+
Vagrant supports parallelizing some actions, such as `vagrant up`, if the
|
216
|
+
provider explicitly supports it. By default, Vagrant will not parallelize a
|
217
|
+
provider.
|
218
|
+
|
219
|
+
When parallelization is enabled, multiple [actions](#actions) may be run
|
220
|
+
in parallel. Therefore, providers must be certain that their action stacks
|
221
|
+
are thread-safe. The core of Vagrant itself (such as box collections, SSH,
|
222
|
+
etc.) is thread-safe.
|
223
|
+
|
224
|
+
Providers can explicitly enable parallelization by setting the `parallel`
|
225
|
+
option on the provider component:
|
226
|
+
|
227
|
+
```ruby
|
228
|
+
provider("my_cloud", parallel: true) do
|
229
|
+
require_relative "provider"
|
230
|
+
Provider
|
231
|
+
end
|
232
|
+
```
|
233
|
+
|
234
|
+
That is the only change that is needed to enable parallelization.
|
@@ -0,0 +1,64 @@
|
|
1
|
+
---
|
2
|
+
page_title: "Custom Provisioners - Plugin Development"
|
3
|
+
sidebar_current: "plugins-provisioners"
|
4
|
+
---
|
5
|
+
|
6
|
+
# Plugin Development: Provisioners
|
7
|
+
|
8
|
+
This page documents how to add new [provisioners](/v2/provisioning/index.html) to Vagrant,
|
9
|
+
allowing Vagrant to automatically install software and configure software
|
10
|
+
using a custom provisioner. Prior to reading this, you should be familiar
|
11
|
+
with the [plugin development basics](/v2/plugins/development-basics.html).
|
12
|
+
|
13
|
+
<div class="alert alert-warn">
|
14
|
+
<p>
|
15
|
+
<strong>Warning: Advanced Topic!</strong> Developing plugins is an
|
16
|
+
advanced topic that only experienced Vagrant users who are reasonably
|
17
|
+
comfortable with Ruby should approach.
|
18
|
+
</p>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
## Definition Component
|
22
|
+
|
23
|
+
Within the context of a plugin definition, new provisioners can be defined
|
24
|
+
like so:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
provisioner "custom" do
|
28
|
+
require_relative "provisioner"
|
29
|
+
Provisioner
|
30
|
+
end
|
31
|
+
```
|
32
|
+
|
33
|
+
Provisioners are defined with the `provisioner` method, which takes a
|
34
|
+
single argument specifying the name of the provisioner. This is the
|
35
|
+
name that used with `config.vm.provision` when configuring and enabling
|
36
|
+
the provisioner. So in the case above, the provisioner would be enabled
|
37
|
+
using `config.vm.provision :custom`.
|
38
|
+
|
39
|
+
The block argument then lazily loads and returns a class that implements
|
40
|
+
the `Vagrant.plugin(2, :provisioner)` interface, which is covered next.
|
41
|
+
|
42
|
+
## Provisioner Class
|
43
|
+
|
44
|
+
The provisioner class should subclass and implement
|
45
|
+
`Vagrant.plugin(2, :provisioner)` which is an upgrade-safe way to let
|
46
|
+
Vagrant return the proper parent class for provisioners.
|
47
|
+
|
48
|
+
This class and the methods that need to be implemented are
|
49
|
+
[very well documented](https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/plugin/v2/provisioner.rb).
|
50
|
+
The documentation on the class in the comments should be enough
|
51
|
+
to understand what needs to be done.
|
52
|
+
|
53
|
+
There are two main methods that need to be implemented: the
|
54
|
+
`configure` method and the `provision` method.
|
55
|
+
|
56
|
+
The `configure` method is called early in the machine booting process
|
57
|
+
to allow the provisioner to define new configuration on the machine, such
|
58
|
+
as sharing folders, defining networks, etc. As an example, the
|
59
|
+
[Chef solo provisioner](https://github.com/mitchellh/vagrant/blob/master/plugins/provisioners/chef/provisioner/chef_solo.rb#L24)
|
60
|
+
uses this to define shared folders.
|
61
|
+
|
62
|
+
The `provision` method is called when the machine is booted and ready
|
63
|
+
for SSH connections. In this method, the provisioner should execute
|
64
|
+
any commands that need to be executed.
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
page_title: "Plugin Usage - Plugins"
|
3
|
+
sidebar_current: "plugins-usage"
|
4
|
+
---
|
5
|
+
|
6
|
+
# Plugin Usage
|
7
|
+
|
8
|
+
Installing a plugin is easy, and shouldn't take more than a few seconds.
|
9
|
+
|
10
|
+
Please refer to the documentation of any plugin you plan on using for
|
11
|
+
more information on how to use it, but there is one common method for
|
12
|
+
installation and plugin activation.
|
13
|
+
|
14
|
+
<div class="alert alert-warn">
|
15
|
+
<p>
|
16
|
+
<strong>Warning!</strong> 3rd party plugins can introduce instabilities
|
17
|
+
into Vagrant due to the nature of them being written by non-core users.
|
18
|
+
</p>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
## Installation
|
22
|
+
|
23
|
+
Plugins are installed using `vagrant plugin install`:
|
24
|
+
|
25
|
+
```
|
26
|
+
$ vagrant plugin install vagrant-example-plugin
|
27
|
+
...
|
28
|
+
```
|
29
|
+
|
30
|
+
Once a plugin is installed, it will automatically be loaded by Vagrant.
|
31
|
+
Plugins which cannot be loaded shouldn't crash Vagrant. Instead,
|
32
|
+
Vagrant will show an error message that a plugin failed to load.
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
Once a plugin is installed, you should refer to the plugin's documentation
|
37
|
+
to see exactly how to use it. Plugins which add commands should be instantly
|
38
|
+
available via `vagrant`, provisioners should be available via
|
39
|
+
`config.vm.provision`, etc.
|
40
|
+
|
41
|
+
**Note:** In the future, the `vagrant plugin` command will include a
|
42
|
+
subcommand that will document the components that each plugin installs.
|
43
|
+
|
44
|
+
## Uninstallation
|
45
|
+
|
46
|
+
Uninstalling a plugin is as easy as installing it. Just use the
|
47
|
+
`vagrant plugin uninstall` command and the plugin will be removed. Example:
|
48
|
+
|
49
|
+
```
|
50
|
+
$ vagrant plugin uninstall vagrant-example-plugin
|
51
|
+
...
|
52
|
+
```
|
53
|
+
|
54
|
+
## Listing Plugins
|
55
|
+
|
56
|
+
To view what plugins are installed into your Vagrant environment at
|
57
|
+
any time, use the `vagrant plugin list` command. This will list the plugins
|
58
|
+
that are installed along with their version.
|
@@ -0,0 +1,67 @@
|
|
1
|
+
---
|
2
|
+
page_title: "Basic Usage - Providers"
|
3
|
+
sidebar_current: "providers-basic-usage"
|
4
|
+
---
|
5
|
+
|
6
|
+
# Basic Provider Usage
|
7
|
+
|
8
|
+
## Boxes
|
9
|
+
|
10
|
+
Boxes are all provider-specific. A box for VirtualBox is incompatible with
|
11
|
+
the VMware Fusion provider, or any other provider. A box must be installed
|
12
|
+
for each provider, and can share the same name as other boxes as long
|
13
|
+
as the providers differ. So you can have both a VirtualBox and VMware Fusion
|
14
|
+
"precise64" box.
|
15
|
+
|
16
|
+
Installing boxes hasn't changed at all:
|
17
|
+
|
18
|
+
```
|
19
|
+
$ vagrant box add \
|
20
|
+
precise64 http://files.vagrantup.com/precise64.box
|
21
|
+
```
|
22
|
+
|
23
|
+
Vagrant now automatically detects what provider a box is for. This is
|
24
|
+
visible when listing boxes. Vagrant puts the provider in parentheses next
|
25
|
+
to the name, as can be seen below.
|
26
|
+
|
27
|
+
```
|
28
|
+
$ vagrant box list
|
29
|
+
precise64 (virtualbox)
|
30
|
+
precise64 (vmware_fusion)
|
31
|
+
```
|
32
|
+
|
33
|
+
## Vagrant Up
|
34
|
+
|
35
|
+
Once a provider is installed, it is used by calling `vagrant up` with the `--provider` flag,
|
36
|
+
specifying the provider you want to back the machine. No other configuration
|
37
|
+
is necessary! What this looks like:
|
38
|
+
|
39
|
+
```
|
40
|
+
$ vagrant up --provider=vmware_fusion
|
41
|
+
```
|
42
|
+
|
43
|
+
If the provider is well-behaved then everything should just work. Of course,
|
44
|
+
each provider typically exposes custom configuration options to fine tune
|
45
|
+
and control that provider, but defaults should work great to get started.
|
46
|
+
|
47
|
+
From this point forward, you can use all the other commands without
|
48
|
+
specifying a `--provider`; Vagrant is able to figure it out on its own.
|
49
|
+
Specifically, once you run `vagrant up --provider`, Vagrant is able to see
|
50
|
+
what provider is backing an existing machine, so commands such as `destroy`,
|
51
|
+
`suspend`, etc. do not need to be told what provider to use.
|
52
|
+
|
53
|
+
<div class="alert alert-info">
|
54
|
+
<h3>Limitations</h3>
|
55
|
+
<p>
|
56
|
+
Vagrant currently restricts you to bringing up one provider per machine.
|
57
|
+
If you have a multi-machine environment, you can bring up one machine
|
58
|
+
backed by VirtualBox and another backed by VMware Fusion, for example, but you
|
59
|
+
can't back the <em>same machine</em> with both VirtualBox and
|
60
|
+
VMware Fusion.
|
61
|
+
</p>
|
62
|
+
|
63
|
+
<p>
|
64
|
+
This is a limitation that will be removed in a future version of
|
65
|
+
Vagrant.
|
66
|
+
</p>
|
67
|
+
</div>
|
@@ -0,0 +1,89 @@
|
|
1
|
+
---
|
2
|
+
page_title: "Configuration - Providers"
|
3
|
+
sidebar_current: "providers-configuration"
|
4
|
+
---
|
5
|
+
|
6
|
+
# Configuration
|
7
|
+
|
8
|
+
While well-behaved providers should work with any Vagrantfile with sane
|
9
|
+
defaults, providers generally expose unique configuration
|
10
|
+
options so that you can get the most out of each provider.
|
11
|
+
|
12
|
+
This provider-specific configuration is done within the Vagrantfile
|
13
|
+
in a way that is portable, easy to use, and easy to understand.
|
14
|
+
|
15
|
+
## Portability
|
16
|
+
|
17
|
+
An important fact is that even if you configure other providers within
|
18
|
+
a Vagrantfile, the Vagrantfile remains portable even to individuals who
|
19
|
+
don't necessarilly have that provider installed.
|
20
|
+
|
21
|
+
For example, if you configure VMware Fusion and send it to an individual
|
22
|
+
who doesn't have the VMware Fusion provider, Vagrant will silently ignore
|
23
|
+
that part of the configuration.
|
24
|
+
|
25
|
+
## Provider Configuration
|
26
|
+
|
27
|
+
Configuring a specific provider looks like this:
|
28
|
+
|
29
|
+
```
|
30
|
+
Vagrant.configure("2") do |config|
|
31
|
+
# ... (other config)
|
32
|
+
|
33
|
+
config.vm.provider "virtualbox" do |vb|
|
34
|
+
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Multiple `config.vm.provider` blocks can exist to configure multiple
|
40
|
+
providers.
|
41
|
+
|
42
|
+
The configuration format should look very similar to how provisioners
|
43
|
+
are configured. The `config.vm.provider` takes a single parameter: the
|
44
|
+
name of the provider being configured. Then, an inner block with custom
|
45
|
+
configuration options is exposed that can be used to configure that
|
46
|
+
provider.
|
47
|
+
|
48
|
+
This inner configuration differs among providers, so please read the
|
49
|
+
documentation for your provider of choice to see available configuration
|
50
|
+
options.
|
51
|
+
|
52
|
+
Remember, some providers don't require any provider-specific configuration
|
53
|
+
and work directly out of the box. Provider-specific configuration is meant
|
54
|
+
as a way to expose more options to get the most of the provider of your
|
55
|
+
choice. It is not meant as a roadblock to running against a specific provider.
|
56
|
+
|
57
|
+
## Overriding Configuration
|
58
|
+
|
59
|
+
Providers can also override non-provider specific configuration, such
|
60
|
+
as `config.vm.box` and any other Vagrant configuration. This is done by
|
61
|
+
specifying a second argument to `config.vm.provider`. This argument is
|
62
|
+
just like the normal `config`, so set any settings you want, and they will
|
63
|
+
be overriden only for that provider.
|
64
|
+
|
65
|
+
Example:
|
66
|
+
|
67
|
+
```
|
68
|
+
Vagrant.configure("2") do |config|
|
69
|
+
config.vm.box = "precise64"
|
70
|
+
|
71
|
+
config.vm.provider "vmware_fusion" do |v, override|
|
72
|
+
override.vm.box = "precise64_fusion"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
```
|
76
|
+
|
77
|
+
In the above case, Vagrant will use the "precise64" box by default, but
|
78
|
+
will use "precise64_fusion" if the VMware Fusion provider is used.
|
79
|
+
|
80
|
+
<div class="alert alert-info">
|
81
|
+
<p>
|
82
|
+
<strong>The Vagrant Way:</strong> The proper "Vagrant way" is to
|
83
|
+
avoid any provider-specific overrides if possible by making boxes
|
84
|
+
for multiple providers that are as identical as possible, since box
|
85
|
+
names can map to multiple providers. However, this isn't always possible,
|
86
|
+
and in those cases, overrides are available.
|
87
|
+
</p>
|
88
|
+
</div>
|
89
|
+
|