From b7c151916be5b43a8d00d3932f4a75f6ed20f7a8 Mon Sep 17 00:00:00 2001 From: Peter Bittner Date: Wed, 13 Dec 2017 00:53:34 +0100 Subject: [PATCH 1/2] Add VMware Workstation Player to virtualization --- manifests/params.pp | 4 ++ manifests/virtualization/vmware.pp | 42 +++++++++++++++++++ .../software_virtualization_vmware_spec.rb | 19 +++++++++ 3 files changed, 65 insertions(+) create mode 100644 manifests/virtualization/vmware.pp create mode 100644 spec/classes/software_virtualization_vmware_spec.rb diff --git a/manifests/params.pp b/manifests/params.pp index b1314df..19648cd 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -167,6 +167,10 @@ 'source' => 'https://www.virtualbox.org/download/oracle_vbox.asc', } } + $vmware_version = '14.0.0-6661328' + $vmware_urlbase = 'https://download3.vmware.com/software/player/file' + $vmware_package = "VMware-Player-${vmware_version}.x86_64.bundle" + } elsif ($::operatingsystem == 'windows') and (versioncmp($::operatingsystemrelease, '7') >= 0) { #### init #### include '::chocolatey' diff --git a/manifests/virtualization/vmware.pp b/manifests/virtualization/vmware.pp new file mode 100644 index 0000000..07c5a47 --- /dev/null +++ b/manifests/virtualization/vmware.pp @@ -0,0 +1,42 @@ +# vmware.pp +# Install VMware Workstation Player for OS X, Ubuntu, or Windows +# https://www.vmware.com/products/workstation-player.html +# +# + +class software::virtualization::vmware ( + $ensure = $software::params::software_ensure, + $version = $software::params::vmware_version, + $urlbase = $software::params::vmware_urlbase, + $package = $software::params::vmware_package, +) inherits software::params { + + validate_string($ensure) + + case $::operatingsystem { + 'Debian', 'Ubuntu': { + validate_string($version, $urlbase, $package) + + $vmware_installer = "/tmp/${package}" + $vmware_install_cmd = "${vmware_installer} --console --eulas-agreed --required" + $vmware_uninstall_cmd = "${vmware_installer} --uninstall-product=vmware-player --required" + + file { $vmware_installer: + source => "${urlbase}/${package}", + owner => 'root', + group => 'root', + mode => '0755', + } + -> exec { $vmware_install_cmd: + path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin'], + # NOTE: This will make it difficult to upgrade to a newer version + # (VMware-Player will need to be uninstalled prior to upgrade) + creates => '/usr/bin/vmplayer', + } + } + default: { + fail("The ${name} class is not supported on ${::operatingsystem}.") + } + } + +} diff --git a/spec/classes/software_virtualization_vmware_spec.rb b/spec/classes/software_virtualization_vmware_spec.rb new file mode 100644 index 0000000..621eaf0 --- /dev/null +++ b/spec/classes/software_virtualization_vmware_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe 'software::virtualization::vmware' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts + end + + context 'with defaults' do + if facts[:operatingsystem] =~ /^(Debian|Ubuntu)$/ + it { is_expected.to compile.with_all_deps } + else + it { is_expected.to compile.and_raise_error(/is not supported on /) } + end + end + end + end +end From e39396b12e5cf1e6de6c815599c82ec5a75522af Mon Sep 17 00:00:00 2001 From: Peter Bittner Date: Wed, 23 May 2018 23:36:05 +0200 Subject: [PATCH 2/2] Fix Ruby syntax for regex in spec test --- manifests/params.pp | 7 +++++++ spec/classes/software_virtualization_vmware_spec.rb | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/manifests/params.pp b/manifests/params.pp index d4a8ffb..f749696 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -95,6 +95,9 @@ $virtualbox_build = '112440' $virtualbox_url = "http://download.virtualbox.org/virtualbox/${virtualbox_version}/VirtualBox-${virtualbox_version}-${virtualbox_build}-OSX.dmg" $virtualbox_key = undef + $vmware_version = undef + $vmware_urlbase = undef + $vmware_package = undef # ### webstack #### @@ -206,6 +209,10 @@ $virtualbox_build = undef $virtualbox_url = undef $virtualbox_key = undef + $vmware_version = undef + $vmware_urlbase = undef + $vmware_package = undef + } else { fail("The ${module_name} module is not supported on ${::operatingsystem} with version ${::operatingsystemrelease}.") } diff --git a/spec/classes/software_virtualization_vmware_spec.rb b/spec/classes/software_virtualization_vmware_spec.rb index 621eaf0..f4de632 100644 --- a/spec/classes/software_virtualization_vmware_spec.rb +++ b/spec/classes/software_virtualization_vmware_spec.rb @@ -8,10 +8,10 @@ end context 'with defaults' do - if facts[:operatingsystem] =~ /^(Debian|Ubuntu)$/ + if facts[:operatingsystem] =~ %r{^(Debian|Ubuntu)$} it { is_expected.to compile.with_all_deps } else - it { is_expected.to compile.and_raise_error(/is not supported on /) } + it { is_expected.to compile.and_raise_error(%r{is not supported on }) } end end end