391dc39267
This branch brings in the "machine abstraction" code. This is a major milestone in the development of Vagrant as it abstracts all of the VirtualBox-specific code out into a plugin. There is zero VirtualBox specific code in the core ("lib/") directory at this point. Read on for important points. == Gotchas White it is technically possible now to write plugins for other providers, there is still major work to be done to make this feasible. The plugin interface itself is pretty much done, but there are some issues: * ":virtualbox" is the hardcoded provider to be used at the moment. * There is no way to configure a provider. For example, `config.vm.customize` would never work for anything other than VirtualBox, so there needs to be a way to have provider-specific configuration. This will come soon. * Shared folders and networking need to be rearchitected to be friendly for multiple providers, since it is unrealistic that a provider such as EC2 could provide the same level of networking, for example. * There is no way easy way (like `vagrant package --base`) to create boxes for providers other than VirtualBox. This will be addressed in a whole new feature of Vagrant probably in a future release after provider stuff has shipped. == Writing a Provider To write a provider, you create a Vagrant plugin that defines a "provider". See the "plugins/providers/virtualbox/plugin.rb" for more details. Providers themselves have an exremely simple API. The burden for writing providers mostly rests on the fact that you must define complex middleware sequences. Lots more work to come in the future, but this is a BIG MILESTONE! |
||
---|---|---|
.. | ||
action | ||
driver | ||
action.rb | ||
plugin.rb | ||
provider.rb |