Commit Graph

410 Commits

Author SHA1 Message Date
Mitchell Hashimoto 54bcac2e7a Only error if minor or major version of guest additions is different 2013-02-27 19:10:49 -08:00
Mitchell Hashimoto 5d82123da9 VirtualBox should use the new port forwarding collision detection stuff 2013-02-26 13:38:00 -08:00
Mitchell Hashimoto 082cc7f92d Retry setting default name for VirtualBox VM [GH-1368] 2013-02-23 11:52:29 -08:00
Mitchell Hashimoto a2cd7936ea `vagrant package` works again 2013-02-21 11:14:39 -08:00
Mitchell Hashimoto 455845d591 Merging networks works again 2013-02-18 17:14:25 -08:00
Mitchell Hashimoto 7d32c75141 Remove V2 forwarded ports config because it is unused 2013-02-18 17:14:25 -08:00
Mitchell Hashimoto 8c33814397 Retry SSH on EADDRINUSE 2013-02-18 17:14:25 -08:00
John Barney a390b9dddf Removing tabs added by a bad .vimrc 2013-02-10 03:49:15 -08:00
John Barney 416a765417 Removing extra file 2013-02-10 01:43:49 -08:00
John Barney 52156d7c06 Solved bug with spaces in paths causing errors 2013-02-10 01:41:15 -08:00
John Barney e0949085a0 No longer need VBoxmanage.exe to be in PATH in Cygwin. 2013-02-10 01:40:59 -08:00
John Barney cea8c5dafd Whitespace issue fixed 2013-02-09 19:42:04 -08:00
John Barney 73eb86bad0 Adding Cygwin detection, and fixing pathing issue in VirtualBox driver under Cygwin 2013-02-09 19:36:56 -08:00
Mitchell Hashimoto abdbd2de08 Warning and automatically handle "v-root" 2013-02-08 16:33:09 -08:00
Mitchell Hashimoto a53d569656 When cleaning NFS, properly escape certain characters 2013-02-08 16:18:57 -08:00
Mitchell Hashimoto 0eef208d2d Relax retry constrains on mounting NFS 2013-02-08 16:18:48 -08:00
Mitchell Hashimoto 6afb4326fa Move NFS to a built-in middleware 2013-02-08 15:34:04 -08:00
Mitchell Hashimoto a76556f3eb Fix missing translation error in set_name 2013-02-08 15:17:50 -08:00
Mitchell Hashimoto 7bc72028bd Use custom Gem.configuration to avoid loading gemrc files 2013-02-07 16:32:11 -08:00
Mitchell Hashimoto 2b4920b4b6 Close the tempfile for shell provisioner [GH-1040] 2013-02-07 15:23:18 -08:00
Mitchell Hashimoto 883efcf282 Warn that config.vm.customize is provider-specific for V1 2013-02-07 15:10:40 -08:00
Mitchell Hashimoto 4a1a990491 Raise a proper SSH error on ECONNRESET 2013-02-06 18:08:55 -08:00
Mitchell Hashimoto 1b3250e3b6 `vagrant plugin i nstall` shows version it installed 2013-02-06 17:08:48 -08:00
Mitchell Hashimoto d53e189063 Use the proper provider upgrade mechanism in V1 VM 2013-02-06 16:55:49 -08:00
Mitchell Hashimoto 387692f9c8 Enable symlinks on vboxsf for VirtualBox 4.2 [GH-713] 2013-02-06 11:51:59 -08:00
Mark Peek 5f2c87d41d Allow SSH upload to upload directories 2013-02-05 22:20:19 -08:00
Mitchell Hashimoto 6e0015db19 Add a warning if dotfile_name is used in V1 2013-02-05 22:16:08 -08:00
Mitchell Hashimoto f8c7622414 Add a warning when upgrading an unknown network 2013-02-05 22:12:54 -08:00
Mitchell Hashimoto a74fc014d6 Modernize chef solo configuration 2013-02-05 22:07:50 -08:00
Mitchell Hashimoto 1af3255559 Be more sane about cookbook_paths default in Chef 2013-02-05 22:02:12 -08:00
Mitchell Hashimoto a09c72d84e Properly default provider configs if not specified 2013-02-05 21:33:00 -08:00
Mitchell Hashimoto 79beefdb0a Do proper provider configuration merging 2013-02-05 12:22:00 -08:00
Mitchell Hashimoto 2eeccf085b Refactor the provider config a bit to allow multiple blocks 2013-02-05 12:08:17 -08:00
Mitchell Hashimoto 202cfebc24 SSH communicator: check_key_perms should be a Pathname 2013-02-04 21:06:28 -08:00
Mitchell Hashimoto b9fc6068fb Missing requires for SSH 2013-02-04 13:49:03 -08:00
Mitchell Hashimoto 967bd65ac6 Net-SSH logs come out with Vagrant debug logs 2013-02-04 13:46:59 -08:00
Mitchell Hashimoto e3b9ddda1d Specify specific auth methods to use for SSH.
Specifically no "keyboard-interactive" EVER
2013-02-04 13:37:59 -08:00
Mitchell Hashimoto a72cfdbc00 Improved logging and such around SSH 2013-02-04 11:44:56 -08:00
Mitchell Hashimoto bc7237130d Use the HashiCorp gem source for plugin installs 2013-02-04 11:18:57 -08:00
Mitchell Hashimoto c6a4bd529d Missing interpolated variable for output message on plugin command 2013-02-04 10:43:35 -08:00
Mitchell Hashimoto 85e458b9a8 Forgot an autoload for plugins 2013-02-04 10:41:35 -08:00
Mitchell Hashimoto 55c905b43b `vagrant plugin license` command. 2013-02-04 10:32:04 -08:00
Mitchell Hashimoto 036fa3e96a Set more force flags when uninstalling gems to remove monkeypatch 2013-02-03 17:33:51 -08:00
Mitchell Hashimoto 635949980b Handle the case a plugin install is a plugin not found 2013-02-03 14:29:29 -08:00
Mitchell Hashimoto 1162c2dbfc Instead of shelling out, use the RubyGems API to install plugins
This gets us an accurate name of the gem even if it is installed
from a file.
2013-02-03 13:59:43 -08:00
Mitchell Hashimoto 368ca71d72 Remove the `gem` command. 2013-02-03 13:21:39 -08:00
Mitchell Hashimoto 455745277c List plugins should have output when no plugins 2013-02-03 13:13:22 -08:00
Mitchell Hashimoto 5882d5dad6 VAGRANT_NO_PLUGINS can be used to skip plugin loading 2013-02-03 13:03:00 -08:00
Mitchell Hashimoto 9690754983 Plugin listing is a bit more sophisticated, shows version 2013-02-03 12:59:32 -08:00
Mitchell Hashimoto bc54875a25 Move the plugins.json to the home directory 2013-02-03 12:49:21 -08:00
Mitchell Hashimoto b6821a4fc7 Fix some include requirements for pruning 2013-02-03 10:49:26 -08:00
Mitchell Hashimoto 0d7322578b `vagrant plugin uninstall` 2013-02-03 10:47:32 -08:00
Mitchell Hashimoto e055bc893b Sort the state file as well for sanity 2013-02-03 10:35:59 -08:00
Mitchell Hashimoto 76457eff16 Make sure the state file only contains unique fields 2013-02-03 10:34:43 -08:00
Mitchell Hashimoto 491356c938 Better logging for prune 2013-02-03 10:33:39 -08:00
Mitchell Hashimoto 60d21e35c9 Be silent when uninstalling gems 2013-02-03 10:32:31 -08:00
Mitchell Hashimoto 572142df7e Perform gem uninstallation for prune 2013-02-03 10:30:52 -08:00
Mitchell Hashimoto 472d4182c1 Basic logic behind prune action is good. 2013-02-03 10:15:46 -08:00
Mitchell Hashimoto f257d1211f List actually compares state with gems 2013-02-02 23:59:48 -08:00
Mitchell Hashimoto 8ac7b62075 A really basic "list" command 2013-02-02 23:52:34 -08:00
Mitchell Hashimoto 53667d44db Have a base class to invoke actions on the plugins 2013-02-02 23:38:44 -08:00
Mitchell Hashimoto 150cae86b7 Only show error if exit code != 0 of gem 2013-02-02 23:33:52 -08:00
Mitchell Hashimoto fa50f06a4c Error if RubyGems failed. 2013-02-02 23:31:53 -08:00
Mitchell Hashimoto a2ef7790de Start creating the plugin middleware sequences 2013-02-02 18:42:04 -08:00
Mitchell Hashimoto db2e27bab6 Initial plugin command plugin 2013-02-02 17:12:46 -08:00
Mitchell Hashimoto b3571eb5bb Add message about removing box so something is clearly happening 2013-02-02 16:43:16 -08:00
Mitchell Hashimoto 2dc14af825 `vagrant up` says what provider it will use 2013-02-01 14:03:59 -08:00
Mitchell Hashimoto 26adfb0de6 Put the provider name in the status output 2013-02-01 13:54:52 -08:00
Mitchell Hashimoto 165dd63f78 New HandleBoxUrl built-in middleware to handlet the "box_url" config 2013-02-01 11:31:08 -08:00
Mitchell Hashimoto 3b75652256 Always log stdout/stderr for SSH 2013-02-01 10:56:00 -08:00
Mitchell Hashimoto 6d002eb4c1 Fix a little logging typo 2013-02-01 10:51:53 -08:00
Mitchell Hashimoto b037a8d89c Retry SSH on connection reset 2013-01-31 20:04:57 -08:00
Mitchell Hashimoto ab4046d8af Fix issue where set name doesn't work if saved 2013-01-31 11:26:45 -08:00
Mitchell Hashimoto 1392d9b4a5 Detect if a VM name is already taken for VirtualBox 2013-01-30 23:22:45 -08:00
Mitchell Hashimoto 4fa194899d VirtualBox config: "name" to set the VM name [GH-1126] 2013-01-30 23:03:21 -08:00
Mitchell Hashimoto d19194d95b `vagrant provision` accepts `--provision-with` [GH-1167] 2013-01-30 22:54:28 -08:00
Mitchell Hashimoto 9d2f26604e Properly handle paused VirtualBox VMs [GH-1184] 2013-01-30 22:47:45 -08:00
Mitchell Hashimoto 4ba0fc821e Support mounting NFS folders with spaces in FreeBSD [GH-1229] 2013-01-30 22:19:13 -08:00
Mitchell Hashimoto 76ca35a095 Sanitize folder names for default virtualbox name [GH-1223] 2013-01-30 22:17:10 -08:00
Mitchell Hashimoto f713082280 auto_nat_dns_proxy VirtualBox provider config option [GH-1313]
When set to false, Vagrant will no longer try to automatically manage
NAT DNS proxy settings with VirtualBox.
2013-01-30 21:03:02 -08:00
Mitchell Hashimoto 25713e4568 Show proper message when viewing status for multi-machine 2013-01-30 20:22:29 -08:00
Mitchell Hashimoto 72c10b53e7 Convert provision types to symbols so they work 2013-01-30 19:51:04 -08:00
Mitchell Hashimoto b91d7203eb Pass the start options into the actions so that they have effect 2013-01-30 19:49:18 -08:00
Mitchell Hashimoto 75ea4e5bdd --provision-with works properly again 2013-01-30 19:42:54 -08:00
Mitchell Hashimoto e0f0066c99 --no-provision works properly again 2013-01-30 19:39:21 -08:00
Mitchell Hashimoto 9156be0f84 Use the proper config version in config.vm.define calls 2013-01-30 19:24:09 -08:00
Mitchell Hashimoto bb97351060 Change "channel" to "communicate" in all guests 2013-01-30 10:54:53 -08:00
Mitchell Hashimoto f9a843ddd0 Fix hostonly network adapter IP for VirtualBox 2013-01-30 10:52:49 -08:00
Mitchell Hashimoto d26aea142e NFS properly detects hostonly network for VirtualBox 2013-01-30 10:43:53 -08:00
Mitchell Hashimoto 7eec127704 Support refreshing the machine cache 2013-01-30 10:37:40 -08:00
Mitchell Hashimoto 64042a5d35 Downloading the box_url component works again 2013-01-30 10:24:47 -08:00
Mitchell Hashimoto aa980f2234 Forced halts work 2013-01-29 10:55:40 -08:00
Mitchell Hashimoto f7b39476a0 vagrant destroy --force works [GH-1340] 2013-01-29 10:33:40 -08:00
Mitchell Hashimoto eed24a08e3 Typo in setting up synced folders 2013-01-28 15:57:13 -08:00
Mitchell Hashimoto 2d2f9577af Fix repackage command to actually work properly 2013-01-28 13:06:18 -08:00
Mitchell Hashimoto ca0af2866e Change output to not include the name 2013-01-23 09:45:56 -08:00
Mitchell Hashimoto 7e55e96bd9 Provisioners now sync folders 2013-01-23 09:44:53 -08:00
Mitchell Hashimoto 9cb86706b8 Make all the VirtualBox middleware aware of synced folders 2013-01-23 09:42:19 -08:00
Mitchell Hashimoto 29ca6bc6d1 Upgrade V1 shared folders to V2 2013-01-23 09:27:47 -08:00
Mitchell Hashimoto 4059a4ba2f Define synced_folders on V2 vm config 2013-01-23 09:21:49 -08:00
Mitchell Hashimoto 44d6b9a3f7 Use a proper args array for V1 forwarded ports. Fixes #1330 2013-01-22 14:28:38 -08:00
Mitchell Hashimoto 1fd74da294 Default V1 forward port options to {} Fixes #1329 2013-01-22 14:07:27 -08:00
Mitchell Hashimoto 7c8125905d Set the proper force halt environment 2013-01-22 13:37:44 -08:00
Mitchell Hashimoto 4780f1c07f Use the proper env for branching on Halt in VirtualBox 2013-01-22 13:35:52 -08:00
Mitchell Hashimoto 0fc7cf7f02 Guest `halt` implementations no longer depend on machine state 2013-01-22 12:09:35 -08:00
Mitchell Hashimoto 31448c4cd4 Use the new GracefulHalt built-in for VirtualBox 2013-01-22 12:07:37 -08:00
Mitchell Hashimoto 1bf08f70d6 Add the new graceful_halt settings to `config.vm` 2013-01-22 11:37:49 -08:00
Mitchell Hashimoto d5c5c4f523 Convert all VirtualBox provider internals to use new state API 2013-01-21 11:38:37 -06:00
Mitchell Hashimoto 8c4a7350fe vagrant status uses new MachineState results 2013-01-21 11:35:46 -06:00
Mitchell Hashimoto f24dba0dc5 VirtualBox provider returns new MachineState object 2013-01-21 11:34:04 -06:00
Mitchell Hashimoto cfe55eb57f Whitespace weirdness in the `status` command file 2013-01-21 10:47:29 -06:00
Mitchell Hashimoto 2d57afbbda Support warnings/errors when upgrading Vagrantfiles internally 2013-01-20 22:04:50 -05:00
Mitchell Hashimoto 58eac7117b Only merge provider/provisioner errors if they exist 2013-01-18 13:36:12 -08:00
Mitchell Hashimoto d64c164727 VM configuration only validates the active provider 2013-01-18 13:33:02 -08:00
Mitchell Hashimoto 003ebc811c VirtualBox uses the new validation middleware 2013-01-18 13:29:20 -08:00
Mitchell Hashimoto 7f55d5eac8 Builtin: ConfigValidate will validate your configuration 2013-01-18 13:26:14 -08:00
Mitchell Hashimoto fff021e51d Update Chef provisioner to new validation API 2013-01-18 13:12:02 -08:00
Mitchell Hashimoto df32c47780 Update puppet provisioner config to latest validation API 2013-01-18 13:08:38 -08:00
Mitchell Hashimoto 5e42a99ab6 Update shell provisioner to latest validation api 2013-01-18 13:06:29 -08:00
Mitchell Hashimoto 515ed8f119 Validate providers and provisioners! 2013-01-18 12:56:19 -08:00
Mitchell Hashimoto 3f3c7027aa Machine objects are passed into validate instead of env 2013-01-18 12:43:53 -08:00
Mitchell Hashimoto 3e9e422ce0 Convert existing validate methods to new API for kernel 2013-01-18 12:33:37 -08:00
Mitchell Hashimoto 10a051a64b box add works even if no provider is set 2013-01-16 22:52:44 -08:00
Mitchell Hashimoto c6c27c5e62 Catch Errno::ETIMEDOUT for SSH 2013-01-16 16:42:00 -08:00
Mitchell Hashimoto 129f1985bd Remove the "!" on chef client provision method. 2013-01-13 16:51:16 -08:00
Mitchell Hashimoto 0c8391aedd Chef uses the new provisioner API 2013-01-13 16:41:32 -08:00
Mitchell Hashimoto 51a227ae7e Puppet uses the new provisioner API 2013-01-13 16:22:47 -08:00
Mitchell Hashimoto 5c9f27626c Provisioner built-in uses new API 2013-01-13 16:09:32 -08:00
Mitchell Hashimoto 84c45a854c Remove the ProvisionerCLeanup action from VirtualBox 2013-01-13 16:03:34 -08:00
Mitchell Hashimoto cf2cca3b7c Revamp the configuration internal state for defining provisioners 2013-01-13 16:02:48 -08:00
Mitchell Hashimoto c8053c00a4 New provisioner API. Shell provisioner adheres to it. 2013-01-13 15:48:52 -08:00
Mitchell Hashimoto f1f4f276a0 Set the virtualbox config scope 2013-01-13 12:38:51 -08:00
Mitchell Hashimoto 965427c540 Properly upgrade V1 hostonly/bridged networks to V2 config 2013-01-13 01:07:55 -08:00
Mitchell Hashimoto 212e634c3b Make Provision a built-in action.
This allows other providers to just use it.
2013-01-12 16:22:37 -08:00
Mitchell Hashimoto 22571bf05b Rescue the EHOSTDOWN error for SSH 2013-01-12 12:47:49 -08:00
Mitchell Hashimoto 124a2ee5d3 Add the --provider optional flag to `box add` 2013-01-11 21:24:57 -08:00
Mitchell Hashimoto 2d8a048946 Merge branch 'abstract-networks'
This introduces the new network configuration syntax for Vagrant 1.1
and forward.

== The Problem

With multiple providers, the concept of networking as it stands in Vagrant
1.0.x becomes really muddy. We have `config.vm.forward_port` and
`config.vm.network :hostonly` and `config.vm.network :bridged`. But what
if someone writes an AWS provider? What is a bridged network in AWS? It
just doesn't make sense.

Networking working out of the box with Vagrant is a core part of what
makes Vagrant "magic" to new users. It is a core part of what makes Vagrant
simple to use. One option to punt networking to provider-specific
configuration was considered, but I found the whole idea of networking
too core to Vagrant to simply punt.

Because of this, a whole new method of networking is introduced.

== The Solution

The solution is to have a high-level notion of networking for Vagrant
configuration. This should cover the most _common_ cases of networking, and
every provider should do their best to implement these high-level
abstractions, to ensure the "just works" nature of Vagrant.

In addition to this high-level networking, low-level networking options
should be exposed on the provider configuration. This allows users to do
advanced provider-specific networking configuration if they want, but aren't
required to.

== High-Level Abstractions

=== Available Types

The high-level abstractions built into Vagrant will be the following:

* Forwarded ports - A mapping of host port to guest port that one can hit
  using `localhost`.
* Private network - A private network, the machine should ideally be
  protected from public access.
* Public network - A public network, one that is easily accessible by
  others.

I'm not sure if these are the proper abstractions. They can change up
until 2.0, but these are what we have so far.

Theoretically, here is how mappings would work. Note that this is just
an example, and the mappings in practice of such providers may or
may not map to this as follows.

**VirtualBox**
* Forwarded ports - NAT network, forwared ports.
* Private network - Hostonly network, static IP assigned.
* Public network - Bridged network, IP assigned via DHCP from router.

**VMWare**
* Forwarded ports - NAT network, forwarded ports.
* Private network - Hostonly network, static IP assigned.
* Public network - Bridged network, IP assigned via DHCP from router.

**AWS**
* Forwarded ports - Unimplemented.
* Private network - Public DNS in EC2, private IP in VPC.
* Public network - Elastic IP in EC2 and VPC.

=== Syntax

Networks are configured at the top-level of a Vagrantfile:

```ruby
Vagrant.configure("2") do |config|
  # ...

  config.vm.network :forwarded_port, 80, 8080
  config.vm.network :private_network, "192.168.1.12"
  config.vm.network :public_network
end
```

Providers should do their best to honor these configurations.

=== Advanced Options

While providers should do their best to satisfy the requirements for the
high-level abstractions, it is expected that provider-specific configuration
may be possible per network, even for the high-level configurations. For
this, provider-prefixed configuration options should be done:

```ruby
config.vm.network :forwarded_port, 80, 8000,
  :vmware__device => "vmnet8"

config.vm.network :public_network,
  :aws__elastic_ip => "1.2.3.4",
  :vmware__device => "en0"
```

If at all possible, providers should **not** require advanced options for
these to function.

== Low-level Configuration

While the high-level configuration should satisfy the common case and make
Vagrant work out of the box for most providers, one of the large benefits of
many providers is the ability to do certain networking tricks. For example,
KVM, Hyper-V, vSphere, etc. can create and be a part of true VLANs, which
may be required for certain upstream networking rules/ACLs. For things like
this, the network configuration should go directly into the provider
configuration in some way.

Examples:

```ruby
config.vm.provider :virtualbox do |vb|
  vb.network_adapter 2, :hostonly
  vb.network_adapter 3, :nat
end

config.vm.provider :aws do |aws|
  aws.routing_table = "route-123456"
end
```

It is up to the provider implementation to define the configuration
syntax as well as the implementation details of such an option. Other
providers are unable to see provider configurations other than their own
so it is truly private to the provider.
2013-01-11 16:18:09 -08:00
Mitchell Hashimoto 48eaa93745 Raise proper error if there aren't any NIC slots available 2013-01-11 15:57:08 -08:00
Mitchell Hashimoto 7cd663391e Forwarded ports allow for scoped hash overrides 2013-01-11 15:52:45 -08:00
Mitchell Hashimoto 102e8f23d6 Use scoped hash overrides for high-level config 2013-01-11 15:50:09 -08:00
Mitchell Hashimoto ccc4da0d32 Remove the old networking code 2013-01-11 15:23:20 -08:00
Mitchell Hashimoto 48995f6036 Support mac address and nic_type for host only networks 2013-01-11 15:22:55 -08:00
Mitchell Hashimoto d09dc91d1b Add support for bridged networks again 2013-01-11 15:21:09 -08:00
Mitchell Hashimoto 37e158c9b2 Configure networks on the VM 2013-01-11 15:06:38 -08:00
Mitchell Hashimoto da7f227fff Forwarded ports use the new high-level configuration 2013-01-11 14:51:49 -08:00
Mitchell Hashimoto 7e5f175d2c Check port collisions now uses the new high-level networking 2013-01-11 14:44:27 -08:00
Mitchell Hashimoto 2d8f9baf7f New Network VirtualBox middleware to handle the changes.
Note this is a WIP (hence committed on a branch)
2013-01-11 14:16:00 -08:00
Mitchell Hashimoto 8299ac38bd Rework v1 forward_port call to append forward port networks 2013-01-10 12:06:08 -08:00
Mitchell Hashimoto 09126b20d3 Merge pull request #1283 from eladroz/master
Fixing guest code for RH & SUSE
2013-01-06 17:38:09 -08:00
Jordi Llonch 793ad58e96 fedora 17 & 18 support 2013-01-07 05:23:07 +11:00