Announcing the v2.0.0 Release of the Packer Plugin for VMware Desktop Hypervisors
I'm happy to announce the v2.0.0 release of vmware/packer-plugin-vmware.
This one isn't incremental. It's the result of months spent refactoring, modernizing, and refocusing the plugin.
It's also the first release since the project moved to Broadcom under the vmware GitHub organization.
🚀 Narrowing the Plugin's Focus
The biggest change is scope. The plugin now targets only the VMware Desktop Hypervisors: VMware Fusion Pro and VMware Workstation Pro.
For a long time, the plugin carried the maintenance burden of supporting VMware ESX. That made sense once. It doesn't anymore. Broadcom provides the Packer Plugin for VMware vSphere vmware/packer-plugin-vsphere which is purpose-built for vSphere environments. Keeping parallel ESX support here confused users and split development effort across two plugins. Dropping it means the work goes into the desktop hypervisor experience.
Support for Workstation Player, which has reached end of availability, is gone too.
Everything else in this release builds on that narrower scope.
✨ Enhancements
The release introduces some highly requested features.
First, two changes that will break some configurations:
- Network Adapter Types: You now have to set
network_adapter_typeyourself, based on the guest operating system and the host's CPU architecture. Allowed values arevmxnet3,e1000e, ande1000. The olde1000default is gone. - Tools Upload: If using the
tools_upload_flavorconfiguration, you must includetools_mode = upload.
Cloning from OVF/OVA Templates
The biggest new feature is the ability to clone virtual machines directly from .ovf and .ova files. It uses VMware's ovftool under the hood and complements the existing vmx-based cloning. Instead of starting every build from a bare OS installation, you can now use pre-built appliances or templates exported from vSphere as your base. If your team standardizes on one image artifact across environments, this takes a lot of time out of every build.
A More Reliable tools_mode: attach
tools_mode still supports upload, and now adds attach, which mounts the VMware Tools ISO on the virtual machine's CD-ROM drive as a physical device. It's more reliable than uploading and works across more guests.
Modernizing the go-vnc Library
The most important change under the hood is a dependency swap. The plugin's ability to send keystrokes and interact with the VM console relied on the mitchellh/go-vnc library. That library was archived and no longer getting updates, which put compatibility with newer Go versions and the desktop hypervisors at risk.
I wrote a drop-in replacement, tenthirtyam/go-vnc, modernized the code, updated its APIs, and I'm committed to maintaining it. Swapping the archived dependency for a maintained one keeps the plugin building against current Go releases and current desktop hypervisors.
Codebase Cleanup
Beyond the headline features, a lot of the work went into cleaning up the codebase.
- Explicit Configuration: Ambiguity is the enemy of automation. I've removed deprecated fields like
ssh_skip_request_ptyand now require theusb_versionto be set explicitly when a USB controller is enabled. These changes make your Packer templates clearer and your builds more predictable. - Code Standardization: I've replaced a lot of "magic strings" with shared constants, centralized configuration defaults, and improved input validation across the board. That cuts down on typos and bugs, and it makes the code easier for the next contributor to find their way around.
- Current Dependencies: Dependencies are up to date, so you pick up the latest security and performance fixes.
Thank you for your continued support and feedback.
For the full list of commits, see https://github.com/vmware/packer-plugin-vmware/compare/v1.2.0...v2.0.0
Disclaimer
This is not an official VMware by Broadcom document. This is a personal blog post.
The information is provided as-is with no warranties and confers no rights.
Please, refer to official documentation for the most up-to-date information.