Forge Home


Installs Virtualbox on RHEL and Debian-like systems


89 latest version

4.7 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 7.0.0 (latest)
  • 6.0.0
  • 5.0.0
  • 4.0.1
  • 4.0.0
  • 3.1.0
  • 3.0.0
  • 2.3.0
  • 2.2.1
  • 2.2.0
  • 2.1.0
  • 2.0.0
  • 1.8.0
  • 1.7.3
released Mar 25th 2024
This version is compatible with:
  • Puppet Enterprise 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
  • Puppet >= 7.0.0 < 9.0.0
  • , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'puppet-virtualbox', '7.0.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add puppet-virtualbox
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install puppet-virtualbox --version 7.0.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



puppet/virtualbox — version 7.0.0 Mar 25th 2024


Build Status Code Coverage Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores

This module installs VirtualBox on a Linux host using the official repositories or custom defined repositories. By default, this module will also configure the kernel modules required to run VirtualBox.

By default, this module will install the Oracle VirtualBox yum/apt repo, install the VirtualBox package, and build the VirtualBox kernel modules. You can define a custom package name and/or version, you can also opt to not manage the repositories with this module. Because of the strange convention Oracle has opted to use for versioning VirtualBox, if you set a custom package name, the version parameter will be ignored. If you wish to define a package version with a custom package name, you must use the package_ensure parameter.


This module is tested with:

  • CentOS 6
  • CentOS 7
  • Debian 8
  • Debian 9
  • Ubuntu 16.04

It may work on other distros and OS versions, but these are the versions that we're targeting. If you wish to see another distro/version added to this list, so would we! PRs are welcome :)

This module is tested with the latest version Puppet 4 and Puppet 5; all Puppet supported versions of Ruby are included in the test matrix. If you're interested in the testing matrix, please have a look at the .travis.yml file in the root of the module.


To begin using the virtualbox module, just include the virtualbox class on your node like so:

include virtualbox

This will get you set up with the basics and will meet 90% of the use cases out there.

If you wish to manage your package repositories outside of this module, you just need to set $manage_repo to false:

class { 'virtualbox':
  manage_repo => false,

You can also specify a custom package name like so:

class { 'virtualbox':
  manage_repo  => false,
  package_name => 'virtualbox-custom',

You can also specify the version of the desired version 6.x. If the host is already running a lower version of virtualbox, it is upgraded. If the host is not yet running virtualbox, it is installed.

class { 'virtualbox':
  version => '6.1',

The peculiar versioning in use by Oracle has forced us to do some funky stuff with versioning. If you're using the default package name, this module will concatenate $package_name and $version together with a dash between them. If you opt to define your own package name, the $version parameter is ignored completely and the only way to specify a version would be to use the $package_ensure parameter:

class { 'virtualbox':
  manage_repo    => false,
  package_name   => 'virtualbox-custom',
  package_ensure => '4.3.18_96516',

If you don't want to install the VirtualBox kernel extensions, you can set the manage_kernel parameter to false.

class { 'virtualbox':
  manage_kernel => false,

You can also opt to not manage the package with the manage_package parameter. This would effectively just install the package repository:

class { 'virtualbox':
  manage_kernel  => false,
  manage_package => false,

Extension Pack

NOTE: To use this feature, you must have puppet/archive installed.

There's a defined type to install an Extension Pack. I'm not aware of any extension packs other than the Oracle Extension Pack, but this type should work for third party extensions. You can install Oracle's Extension Pack (adding support for USB 2.0, access to webcam, RDP and E1000 PXE ROM) like so:

  virtualbox::extpack { 'Oracle_VM_VirtualBox_Extension_Pack':
    ensure          => present,
    source          => '',
    checksum_string => 'deecf9b15ffda29d4d5da4349763fd11',

This will download the extension pack, check to make sure the downloaded file matches the expected md5sum, then install the extension pack to /usr/lib/virtualbox/ExtensionPacks.


  1. Fork it
  2. Create a feature branch
  3. Write a failing test
  4. Write the code to make that test pass
  5. Refactor the code
  6. Submit a pull request

We politely request (demand) tests for all new features. Pull requests that contain new features without a test will not be considered. If you need help, just ask!