Puppet Class: software::virtualization::virtualbox

Inherits:
software::params
Defined in:
manifests/virtualization/virtualbox.pp

Overview

Parameters:

  • ensure (Any) (defaults to: $software::params::software_ensure)
  • version (Any) (defaults to: $software::params::virtualbox_version)
  • build (Any) (defaults to: $software::params::virtualbox_build)
  • url (Any) (defaults to: $software::params::virtualbox_url)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'manifests/virtualization/virtualbox.pp', line 7

class software::virtualization::virtualbox (
  $ensure  = $software::params::software_ensure,
  $version = $software::params::virtualbox_version,
  $build   = $software::params::virtualbox_build,
  $url     = $software::params::virtualbox_url,
) inherits software::params {

  validate_string($ensure, $version, $build, $url)

  case $::operatingsystem {
    'Darwin': {
      exec { 'KillVirtualBoxProcesses':
        command     => 'pkill "VBoxXPCOMIPCD" || true && pkill "VBoxSVC" || true && pkill "VBoxHeadless" || true',
        path        => '/usr/bin:/usr/sbin:/bin:/usr/local/bin',
        refreshonly => true,
      }

      package { "VirtualBox-${version}-${build}":
        ensure   => $ensure,
        provider => pkgdmg,
        source   => $url,
        require  => Exec['KillVirtualBoxProcesses'],
      }
    }
    'Ubuntu': {
      $apt_source_ensure = $ensure ? {
        'installed' => present,
        'latest'    => present,
        default     => $ensure,
      }

      include '::apt'
      apt::source { 'virtualbox':
        ensure   => $apt_source_ensure,
        location => $url,
        repos    => 'contrib',
        key      => {
          'id'     => '7B0FAB3A13B907435925D9C954422A4B98AB5139',
          'source' => 'https://www.virtualbox.org/download/oracle_vbox.asc',
        },
      } ->

      package { 'dkms': } ->
      package { "virtualbox-${version}": ensure => $ensure }
    }
    default: {
      fail("The ${name} class is not supported on ${::operatingsystem}.")
    }
  }

}