|
| 1 | +# === Class: oracle_java |
| 2 | +# |
| 3 | +# This module installs Oracle Java from official RPM packages |
| 4 | +# |
| 5 | +# == Parameters |
| 6 | +# |
| 7 | +# $version: |
| 8 | +# Java SE version to install (valid format: 'major'u'minor' or just 'major') |
| 9 | +# $type: |
| 10 | +# envionment type to install (valid: 'jre'|'jdk') |
| 11 | +# |
| 12 | +# === Actions |
| 13 | +# |
| 14 | +# - Install Oracle jre/jdk |
| 15 | +# |
| 16 | +# === Requires |
| 17 | +# |
| 18 | +# - puppetlabs/stdlib module |
| 19 | +# |
| 20 | +# === Sample Usage: |
| 21 | +# |
| 22 | +# class { '::oracle_java': |
| 23 | +# version => '8u5', |
| 24 | +# type => 'jdk' |
| 25 | +# } |
| 26 | +# |
| 27 | +class oracle_java ($version = '8', $type = 'jre') { |
| 28 | + # translate system architecture to expected value |
| 29 | + case $::architecture { |
| 30 | + 'x86_64' : { $arch = 'x64' } |
| 31 | + 'x86' : { $arch = 'i586' } |
| 32 | + default : { fail("Unsupported architecture ${arch}") } |
| 33 | + } |
| 34 | + |
| 35 | + # set to latest release if no minor version was provided |
| 36 | + if $version == '8' { |
| 37 | + $version_real = '8u5' |
| 38 | + } elsif $version == '7' { |
| 39 | + $version_real = '7u60' |
| 40 | + } else { |
| 41 | + $version_real = $version |
| 42 | + } |
| 43 | + |
| 44 | + # get major/minor version numbers |
| 45 | + $array_version = split($version_real, 'u') |
| 46 | + $maj_version = $array_version[0] |
| 47 | + $min_version = $array_version[1] |
| 48 | + |
| 49 | + # associate build number to release version |
| 50 | + case $maj_version { |
| 51 | + 8 : { |
| 52 | + case $min_version { |
| 53 | + '5' : { $build = '-b13' } |
| 54 | + '0' : { $build = '-b132' } |
| 55 | + default : { fail("Unexisting update number ${min_version}") } |
| 56 | + } |
| 57 | + } |
| 58 | + 7 : { |
| 59 | + case $min_version { |
| 60 | + '60' : { $build = '-b19' } |
| 61 | + '55' : { $build = '-b13' } |
| 62 | + '51' : { $build = '-b13' } |
| 63 | + '45' : { $build = '-b18' } |
| 64 | + '40' : { $build = '-b43' } |
| 65 | + '25' : { $build = '-b15' } |
| 66 | + '21' : { $build = '-b11' } |
| 67 | + '17' : { $build = '-b02' } |
| 68 | + '15' : { $build = '-b03' } |
| 69 | + '13' : { $build = '-b20' } |
| 70 | + '11' : { $build = '-b21' } |
| 71 | + '10' : { $build = '-b18' } |
| 72 | + '9' : { $build = '-b05' } |
| 73 | + '7' : { $build = '-b10' } |
| 74 | + '6' : { $build = '-b24' } |
| 75 | + '5' : { $build = '-b06' } |
| 76 | + '4' : { $build = '-b20' } |
| 77 | + '3' : { $build = '-b04' } |
| 78 | + '2' : { $build = '-b13' } |
| 79 | + '1' : { $build = '-b08' } |
| 80 | + '0' : { $build = '' } |
| 81 | + default : { fail("Unexisting update number ${min_version}") } |
| 82 | + } |
| 83 | + } |
| 84 | + default : { |
| 85 | + fail("Unsupported or unexisting version ${version}") |
| 86 | + } |
| 87 | + } |
| 88 | + |
| 89 | + # remove extra particle if minor version is 0 |
| 90 | + $version_final = delete($version_real, 'u0') |
| 91 | + |
| 92 | + # define installer filename and download URL |
| 93 | + $filename = "${type}-${version_final}-linux-${arch}.rpm" |
| 94 | + $downloadurl = "http://download.oracle.com/otn-pub/java/jdk/${version_final}${build}/${filename}" |
| 95 | + |
| 96 | + # make sure install/download directory exists |
| 97 | + file { '/usr/java': |
| 98 | + ensure => directory, |
| 99 | + mode => '0755', |
| 100 | + owner => 'root', |
| 101 | + group => 'root' |
| 102 | + } -> |
| 103 | + # download RPM |
| 104 | + exec { 'downloadRPM': |
| 105 | + path => '/usr/bin', |
| 106 | + cwd => '/usr/java', |
| 107 | + creates => "/usr/java/${filename}", |
| 108 | + command => "wget --no-cookies --no-check-certificate --header \"Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie\" \"${downloadurl}\"", |
| 109 | + timeout => 0 |
| 110 | + } -> |
| 111 | + # install package |
| 112 | + package { $type: |
| 113 | + ensure => latest, |
| 114 | + source => "/usr/java/${filename}", |
| 115 | + provider => rpm |
| 116 | + } |
| 117 | +} |
0 commit comments