Parallels Desktop + Vagrant on macOS
Parallels Desktop is the best virtualisation option for Mac users — especially on Apple Silicon (M1/M2/M3/M4). It offers native ARM performance and excellent OEL 8 support. Vagrant uses Parallels through a dedicated plugin.
⚠ Warning: Parallels Desktop requires a paid licence. The Vagrant provider plugin also requires Parallels Desktop Pro or Business edition — the Standard edition does NOT support the Vagrant provider API.
Step 1 — Install Parallels Desktop
BASH — Install Parallels Desktop
# Download from official site
# https://www.parallels.com/products/desktop/
# Or using Homebrew
brew install --cask parallels
# After installation, activate your licence
# Open Parallels Desktop → Enter licence key
# Verify version
/usr/local/bin/prlctl --version
# or
prlctl --version
Step 2 — Install Vagrant
BASH — Install Vagrant
# Install Vagrant via Homebrew
brew install --cask vagrant
# Verify
vagrant --version
Step 3 — Install Vagrant Parallels Plugin
BASH — Install Parallels Plugin
# Install the official Parallels provider plugin
vagrant plugin install vagrant-parallels
# Verify plugin installed
vagrant plugin list
# Expected output:
# vagrant-parallels (2.x.x, global)
Step 4 — Verify Parallels Provider Works
BASH — Verify Setup
# Check Vagrant can see Parallels
vagrant --version
# List available boxes
vagrant box list
# Test with a quick status check in any directory
vagrant status
# Check prlctl is accessible (Parallels CLI)
prlctl list --all
Parallels Plugin Configuration
The Parallels provider has specific settings in the Vagrantfile. Here is the basic structure:
Ruby — Basic Parallels Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "your-oel8-box"
# Specify Parallels as the provider
config.vm.provider "parallels" do |prl|
prl.name = "OEL8-Dev"
prl.memory = 2048
prl.cpus = 2
# Parallels-specific optimizations
prl.update_guest_tools = false
prl.optimize_power_consumption = false
end
end
Parallels Provider Options
| Option | Default | Description |
|---|---|---|
| prl.name | VM folder name | Name shown in Parallels Desktop UI |
| prl.memory | 512 | RAM in MB |
| prl.cpus | 1 | Number of CPU cores |
| prl.update_guest_tools | false | Auto-update Parallels Tools |
| prl.optimize_power_consumption | false | Power saving mode |
| prl.customize | — | Raw prlctl commands for advanced config |
| prl.linked_clone | true | Use linked clone for fast VM creation |
| prl.check_guest_tools | false | Warn if Parallels Tools outdated |
Common Parallels Plugin Issues
| Error | Cause | Fix |
|---|---|---|
| Provider not found | Plugin not installed | vagrant plugin install vagrant-parallels |
| Provider requires Pro | Standard edition | Upgrade to Parallels Pro/Business |
| prlctl not found | PATH issue | Add /usr/local/bin to PATH |
| Box incompatible | Wrong box format | Use parallels provider box — see Box Packaging page |
| Plugin version mismatch | Old plugin | vagrant plugin update vagrant-parallels |
💡 Note: When running vagrant up with Parallels, always specify the provider explicitly: vagrant up --provider=parallels — this avoids confusion if VirtualBox is also installed.
BASH — Set Default Provider
# Always use --provider flag with Parallels
vagrant up --provider=parallels
# Set default provider to avoid typing every time
export VAGRANT_DEFAULT_PROVIDER=parallels
# Add to ~/.zshrc or ~/.bash_profile to make permanent
echo "export VAGRANT_DEFAULT_PROVIDER=parallels" >> ~/.zshrc