diff --git a/manifests/init.pp b/manifests/init.pp index 689993911..014f5823a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -91,9 +91,12 @@ # class elasticsearch( $config, - $ensure = $elasticsearch::params::ensure, - $autoupgrade = $elasticsearch::params::autoupgrade, - $status = $elasticsearch::params::status, + $ensure = $elasticsearch::params::ensure, + $autoupgrade = $elasticsearch::params::autoupgrade, + $status = $elasticsearch::params::status, + $pkg_source = undef, + $java_install = true, + $java_package = undef ) inherits elasticsearch::params { #### Validate parameters @@ -125,6 +128,10 @@ # service(s) class { 'elasticsearch::service': } + if $java_install == true { + # Install java + class { 'elasticsearch::java': } + } #### Manage relationships diff --git a/manifests/java.pp b/manifests/java.pp new file mode 100644 index 000000000..34ca0c95f --- /dev/null +++ b/manifests/java.pp @@ -0,0 +1,47 @@ +# == Class: elasticsearch::java +# +# This class exists to install java if its not managed from an other module +# +# +# === Parameters +# +# This class does not provide any parameters. +# +# +# === Examples +# +# This class may be imported by other classes to use its functionality: +# class { 'elasticsearch::java': } +# +# It is not intended to be used directly by external resources like node +# definitions or other modules. +# +# +# === Authors +# +# * Richard Pijnenburg +# +class elasticsearch::java { + + if $elasticsearch::java_package == undef { + # Default Java package + case $::operatingsystem { + 'CentOS', 'Fedora', 'Scientific': { + $package = 'java-1.6.0-openjdk' + } + 'Debian', 'Ubuntu': { + $package = 'openjdk-6-jre-headless' + } + default: { + fail("\"${module_name}\" provides no java package + for \"${::operatingsystem}\"") + } + } + } else { + $package = $elasticsearch::java_package + } + + package { $package: + ensure => present + } +} diff --git a/manifests/package.pp b/manifests/package.pp index d9cd2d3ef..24c5675fd 100644 --- a/manifests/package.pp +++ b/manifests/package.pp @@ -39,9 +39,37 @@ $package_ensure = 'purged' } + if $elasticsearch::package { + + $filenameArray = split($elasticsearch::package, '/') + $basefilename = $filenameArray[-1] + + $extArray = split($basefilename, '.') + $ext = $extArray[-1] + + $tmpSource = "/tmp/${basefilename}" + + file { $tmpSource: + source => $elasticsearch::package, + owner => 'root', + group => 'root' + } + + case $ext { + 'deb': { $pkg_provider = 'dpkg' } + 'rpm': { $pkg_provider = 'rpm' } + default: { $pkg_provider = undef } + } + } else { + $tmpSource = undef + $pkg_provider = undef + } + # action package { $elasticsearch::params::package: - ensure => $package_ensure, + ensure => $package_ensure, + source => $tmpSource, + provider => $pkg_provider } }