This is a big commit, and I apologize in advance for the future
git-blames all pointing to me. This commit does a few things:
1. Merges the website/docs and website/www repo into a single website repo
to be in line with other HashiCorp projects
2. Updates to use middleman-hashicorp
3. Converts less to scss to be in line with other projects
4. Updates page styles to be in line with other projects
5. Optimizes images
6. Prepare for S3 + Fastly deployment with scripts, etc.
7. Removes blog posts (they have been transferred to hashicorp.com with
redirects in place
8. Updated sitemap generation script for better SEO
9. Fixed many broken links
10. Add description to all fields
113 lines
4.1 KiB
Markdown
113 lines
4.1 KiB
Markdown
---
|
|
layout: "docs"
|
|
page_title: "Basic Usage - Providers"
|
|
sidebar_current: "providers-basic-usage"
|
|
description: |-
|
|
Vagrant boxes are all provider-specific. A box for VirtualBox is incompatible
|
|
with the VMware Fusion provider, or any other provider. A box must be
|
|
installed for each provider, and can share the same name as other boxes as
|
|
long as the providers differ. So you can have both a VirtualBox and VMware
|
|
Fusion "precise64" box.
|
|
---
|
|
|
|
# Basic Provider Usage
|
|
|
|
## Boxes
|
|
|
|
Vagrant boxes are all provider-specific. A box for VirtualBox is incompatible
|
|
with the VMware Fusion provider, or any other provider. A box must be installed
|
|
for each provider, and can share the same name as other boxes as long
|
|
as the providers differ. So you can have both a VirtualBox and VMware Fusion
|
|
"precise64" box.
|
|
|
|
Installing boxes has not changed at all:
|
|
|
|
```
|
|
$ vagrant box add \
|
|
precise64 https://files.hashicorp.com/precise64.box
|
|
```
|
|
|
|
Vagrant now automatically detects what provider a box is for. This is
|
|
visible when listing boxes. Vagrant puts the provider in parentheses next
|
|
to the name, as can be seen below.
|
|
|
|
```
|
|
$ vagrant box list
|
|
precise64 (virtualbox)
|
|
precise64 (vmware_fusion)
|
|
```
|
|
|
|
## Vagrant Up
|
|
|
|
Once a provider is installed, you can use it by calling `vagrant up`
|
|
with the `--provider` flag. This will force Vagrant to use that specific
|
|
provider. No other configuration is necessary!
|
|
|
|
In normal day-to-day usage, the `--provider` flag is not necessary
|
|
since Vagrant can usually pick the right provider for you. More details
|
|
on how it does this is below.
|
|
|
|
```
|
|
$ vagrant up --provider=vmware_fusion
|
|
```
|
|
|
|
If you specified a `--provider` flag, you only need to do this for the
|
|
`up` command. Once a machine is up and running, Vagrant is able to
|
|
see what provider is backing a running machine, so commands such as
|
|
`destroy`, `suspend`, etc. do not need to be told what provider to use.
|
|
|
|
<div class="alert alert-info">
|
|
Vagrant currently restricts you to bringing up one provider per machine.
|
|
If you have a multi-machine environment, you can bring up one machine
|
|
backed by VirtualBox and another backed by VMware Fusion, for example, but you
|
|
cannot back the <em>same machine</em> with both VirtualBox and
|
|
VMware Fusion. This is a limitation that will be removed in a future
|
|
version of Vagrant.
|
|
</div>
|
|
|
|
## Default Provider
|
|
|
|
As mentioned earlier, you typically do not need to specify `--provider`
|
|
_ever_. Vagrant is smart enough about being able to detect the provider
|
|
you want for a given environment.
|
|
|
|
Vagrant attempts to find the default provider in the following order:
|
|
|
|
1. The `--provider` flag on a `vagrant up` is chosen above all else, if
|
|
it is present.
|
|
|
|
2. If the `VAGRANT_DEFAULT_PROVIDER` environmental variable is set,
|
|
it takes next priority and will be the provider chosen.
|
|
|
|
3. Vagrant will go through all of the `config.vm.provider` calls in the
|
|
Vagrantfile and try each in order. It will choose the first provider
|
|
that is usable. For example, if you configure Hyper-V, it will never
|
|
be chosen on Mac this way. It must be both configured and usable.
|
|
|
|
4. Vagrant will go through all installed provider plugins (including the
|
|
ones that come with Vagrant), and find the first plugin that reports
|
|
it is usable. There is a priority system here: systems that are known
|
|
better have a higher priority than systems that are worse. For example,
|
|
if you have the VMware provider installed, it will always take priority
|
|
over VirtualBox.
|
|
|
|
5. If Vagrant still has not found any usable providers, it will error.
|
|
|
|
Using this method, there are very few cases that Vagrant does not find the
|
|
correct provider for you. This also allows each
|
|
[Vagrantfile](/docs/vagrantfile/) to define what providers
|
|
the development environment is made for by ordering provider configurations.
|
|
|
|
A trick is to use `config.vm.provider` with no configuration at the top of
|
|
your Vagrantfile to define the order of providers you prefer to support:
|
|
|
|
```ruby
|
|
Vagrant.configure("2") do |config|
|
|
# ... other config up here
|
|
|
|
# Prefer VMware Fusion before VirtualBox
|
|
config.vm.provider "vmware_fusion"
|
|
config.vm.provider "virtualbox"
|
|
end
|
|
```
|