3. Parallels Desktop for Mac
Desktop virtualization system by Parallels
http://www.parallels.com/desktop/
4. Why am I here?
• Explore how Vagrant plugin model is designed
• Share our experience with Vagrant plugin development
• Tell how we’ve created the Parallels provider for Vagrant
5. On the Inside of Vagrant
• Vagrant world is plugin-centric
• Most of basic features are implemented via built-in plugins
• Internal and external plugins uses the same API
15. Before You Start
• Requirement - be familiar with Ruby
• Each plugin is a RubyGem
• Run acceptance tests via “vagrant-spec”
• Check whether it's already implemented
17. “Provider” component
• Driver is bridge to Parallels Desktop CLI
• Actions - steps for “up”, “halt”, “destroy”, etc.
• Box format - there is a prepared “*.pvm” image
Vagrant Parallels Provider
18. “Provider Capability” component
• Interaction with other plugins or Vagrant core:
• `public_address` for Vagrant Share
• `nic_mac_addresses` for Windows guests
Vagrant Parallels Provider
19. • Implementation of Parallels Shared Folders
• How to configure the VM to use Shared Folders
• How to mount/unmount them (guest capability call)
“Synced Folder” component
Vagrant Parallels Provider
20. “Guest Capability” component
• Extensions for guests:
• How to mount Parallels Shared Folders
• How to install Parallels Tools
Vagrant Parallels Provider
22. Provider Summary:
Vagrant Plugin Development
• Provider is the most complicated component in Vagrant
• Maintenance issues request much time and effort
• Don’t forget about acceptance testing