Skip to content
This repository was archived by the owner on Dec 19, 2024. It is now read-only.

Commit 0ff6eb1

Browse files
committed
Major refactoring
1 parent e1eadce commit 0ff6eb1

File tree

3 files changed

+101
-75
lines changed

3 files changed

+101
-75
lines changed

manifests/download.pp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# == Class: oracle_java::download
2+
class oracle_java::download {
3+
# The base class must be included first
4+
if !defined(Class['oracle_java']) {
5+
fail('You must include the oracle_java base class before using any oracle_java sub class')
6+
}
7+
8+
# define packages required by the exec resources
9+
if !defined(Package['wget']) {
10+
package { 'wget': ensure => present }
11+
}
12+
13+
# make sure install/download directory exists
14+
file { '/usr/java':
15+
ensure => directory,
16+
mode => '0755',
17+
owner => 'root',
18+
group => 'root'
19+
} ->
20+
# download RPM
21+
exec { 'download java RPM':
22+
path => '/usr/bin',
23+
cwd => '/usr/java',
24+
creates => "/usr/java/${oracle_java::filename}",
25+
command => "wget --no-cookies --no-check-certificate --header \"Cookie: oraclelicense=accept-securebackup-cookie\" \"${oracle_java::downloadurl}\"",
26+
timeout => 0, # Oracle's servers can sometimes be (very) slow
27+
require => Package['wget']
28+
}
29+
}

manifests/init.pp

Lines changed: 25 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#
2828
class oracle_java ($version = '8', $type = 'jre') {
2929
# parameters validation
30-
validate_re($version, '^([0-9]|[0-9]u[0-9][0-9])$', '$version must be formated as \'major\'u\'minor\' or just \'major\'')
30+
validate_re($version, '^([0-9]|[0-9]u[0-9]{1,2})$', '$version must be formated as \'major\'u\'minor\' or just \'major\'')
3131
validate_re($type, '^(jre|jdk)$', '$type must be either \'jre\' or \'jdk\'')
3232

3333
# set to latest release if no minor version was provided
@@ -142,9 +142,19 @@
142142

143143
# translate system architecture to expected value
144144
case $::architecture {
145-
'x86_64' : { $arch = 'x64' }
146-
'x86' : { $arch = 'i586' }
147-
default : { fail("oracle_java does not support architecture ${arch} (yet)") }
145+
'x86_64' : {
146+
if $maj_version == '6' and $min_version < '4' {
147+
$arch = 'amd64'
148+
} else {
149+
$arch = 'x64'
150+
}
151+
}
152+
'x86' : {
153+
$arch = 'i586'
154+
}
155+
default : {
156+
fail("oracle_java does not support architecture ${arch} (yet)")
157+
}
148158
}
149159

150160
# define installer filename and download URL
@@ -153,81 +163,21 @@
153163
default => "${type}-${version_final}-linux-${arch}.rpm"
154164
}
155165
$downloadurl = "http://download.oracle.com/otn-pub/java/jdk/${version_final}${build}/${filename}"
166+
# used for installing Java 6
167+
# translate system architecture one more time
168+
$arch_extracted = $::architecture ? {
169+
'x86_64' => 'amd64',
170+
default => $arch
171+
}
172+
$filename_extracted = "${type}-${version_final}-linux-${arch_extracted}.rpm"
156173

157174
# define package name
158175
if $maj_version == '8' and $min_version >= '20' {
159-
$packagename = "${type}1.${maj_version}.0_${min_version}"
160-
}
161-
else {
176+
$packagename = "${type}1.${maj_version}.0_${min_version}"
177+
} else {
162178
$packagename = $type
163179
}
164180

165-
# make sure install/download directory exists
166-
file { '/usr/java':
167-
ensure => directory,
168-
mode => '0755',
169-
owner => 'root',
170-
group => 'root'
171-
} ->
172-
# download RPM
173-
exec { 'download java RPM':
174-
path => '/usr/bin',
175-
cwd => '/usr/java',
176-
creates => "/usr/java/${filename}",
177-
command => "wget --no-cookies --no-check-certificate --header \"Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie\" \"${downloadurl}\"",
178-
timeout => 0,
179-
require => Package['wget']
180-
}
181-
182-
# install package
183-
if $maj_version >= 7 {
184-
package { $packagename:
185-
ensure => latest,
186-
source => "/usr/java/${filename}",
187-
provider => rpm,
188-
require => Exec['download java RPM']
189-
}
190-
}
191-
# the procedure is a bit more complicated for older versions...
192-
# RPM files are packaged into a BIN archive which needs to be extracted
193-
else {
194-
# translate system architecture one more time
195-
$arch_final = $::architecture ? {
196-
'x86_64' => 'amd64',
197-
default => $arch
198-
}
199-
200-
# the extracted file includes the 'new' arch string
201-
$filename_extract = "${type}-${version_final}-linux-${arch_final}.rpm"
202-
203-
exec { 'unpack java RPM':
204-
path => '/bin',
205-
cwd => '/usr/java',
206-
creates => "/usr/java/${filename_extract}",
207-
command => "sed -ni '/exit 0/,\${//!p}' ${filename}; chmod +x ${filename}; ./${filename}",
208-
require => [Package['sed'], Exec['download java RPM']]
209-
} ~>
210-
# remove undesired extra RPMs
211-
exec { 'cleanup java RPM':
212-
path => '/bin',
213-
cwd => '/usr/java',
214-
refreshonly => true,
215-
command => 'rm -f sun-javadb-*.rpm'
216-
} ->
217-
package { $packagename:
218-
ensure => latest,
219-
source => "/usr/java/${filename_extract}",
220-
provider => rpm
221-
}
222-
}
223-
224-
# define required packages, they are be required by exec resources
225-
if !defined(Package['wget']) {
226-
package { 'wget': ensure => present }
227-
}
228-
if $maj_version < 7 {
229-
if !defined(Package['sed']) {
230-
package { 'sed': ensure => present }
231-
}
232-
}
181+
include oracle_java::download
182+
include oracle_java::install
233183
}

manifests/install.pp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# == Class: oracle_java::install
2+
class oracle_java::install {
3+
# The base class must be included first
4+
if !defined(Class['oracle_java']) {
5+
fail('You must include the oracle_java base class before using any oracle_java sub class')
6+
}
7+
8+
# define packages required by the exec resources
9+
if $oracle_java::maj_version < 7 {
10+
if !defined(Package['sed']) {
11+
package { 'sed': ensure => present }
12+
}
13+
}
14+
15+
# install package
16+
if $oracle_java::maj_version >= 7 {
17+
package { $oracle_java::packagename:
18+
ensure => latest,
19+
source => "/usr/java/${oracle_java::filename}",
20+
provider => rpm,
21+
require => Exec['download java RPM']
22+
}
23+
}
24+
# the procedure is a bit more complicated for Java 6...
25+
# RPM files are packaged into a BIN archive which needs to be extracted
26+
else {
27+
exec { 'unpack java RPM':
28+
path => '/bin',
29+
cwd => '/usr/java',
30+
creates => "/usr/java/${oracle_java::filename_extracted}",
31+
command => "sed -ni '/exit 0/,\${//!p}' ${oracle_java::filename}; chmod +x ${oracle_java::filename}; ./${oracle_java::filename}",
32+
require => [Package['sed'], Exec['download java RPM']]
33+
} ~>
34+
# remove undesired extra RPMs
35+
exec { 'cleanup java RPM':
36+
path => '/bin',
37+
cwd => '/usr/java',
38+
refreshonly => true,
39+
command => 'rm -f sun-javadb-*.rpm'
40+
} ->
41+
package { $oracle_java::packagename:
42+
ensure => latest,
43+
source => "/usr/java/${oracle_java::filename_extracted}",
44+
provider => rpm
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)