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)
  • url (Any) (defaults to: $software::params::virtualbox_url)
  • key (Any) (defaults to: $software::params::virtualbox_key)


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
58
59
60
61
62
# File 'manifests/virtualization/virtualbox.pp', line 7

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

  case $facts['os']['name'] {
    'Darwin': {
      package { 'virtualbox':
        ensure   => $ensure,
        provider => brewcask,
      }
      -> package { 'virtualbox-extension-pack':
        ensure   => $ensure,
        provider => brewcask,
      }
    }
    'Debian', 'Ubuntu': {
      assert_type(String[1], $version)
      assert_type(Stdlib::HTTPUrl, $url)
      assert_type(Hash, $key)

      $apt_source_ensure = $ensure ? {
        'installed' => present,
        'latest'    => present,
        default     => $ensure,
      }

      include '::apt'
      apt::source { 'virtualbox':
        ensure   => $apt_source_ensure,
        location => $url,
        repos    => 'contrib',
        key      => $key,
      }
      -> Class['apt::update']

      -> package { 'dkms': }
      -> package { "virtualbox-${version}":
        ensure => $ensure,
      }
    }
    'windows': {
      package { 'virtualbox':
        ensure          => $ensure,
        provider        => chocolatey,
        install_options => ['--allow-empty-checksums'],
      }
    }
    default: {
      fail("The ${name} class is not supported on ${facts['os']['name']}.")
    }
  }

}