-
Notifications
You must be signed in to change notification settings - Fork 273
Expand file tree
/
Copy pathinit.pp
More file actions
142 lines (131 loc) · 5.55 KB
/
init.pp
File metadata and controls
142 lines (131 loc) · 5.55 KB
1
2
3
4
5
6
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# @summary
# This module manages the Java runtime package
#
# @param distribution
# The java distribution to install. Can be one of "jdk" or "jre",
# or other platform-specific options where there are multiple
# implementations available (eg: OpenJDK vs Oracle JDK).
#
# @param version
# The version of java to install. By default, this module simply ensures
# that java is present, and does not require a specific version.
#
# @param package
# The name of the java package. This is configurable in case a non-standard
# java package is desired.
#
# @param package_options
# Array of strings to pass installation options to the 'package' Puppet resource.
# Options available depend on the 'package' provider for the target OS.
#
# @param java_alternative
# The name of the java alternative to use on Debian systems.
# "update-java-alternatives -l" will show which choices are available.
# If you specify a particular package, you will almost always also
# want to specify which java_alternative to choose. If you set
# this, you also need to set the path below.
#
# @param java_alternative_path
# The path to the "java" command on Debian systems. Since the
# alternatives system makes it difficult to verify which
# alternative is actually enabled, this is required to ensure the
# correct JVM is enabled.
#
# @param java_home
# The path to where the JRE is installed. This will be set as an
# environment variable.
#
class java (
String $distribution = 'jdk',
Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/] $version = 'present',
Optional[String] $package = undef,
Optional[Array] $package_options = undef,
Optional[String] $java_alternative = undef,
Optional[String] $java_alternative_path = undef,
Optional[String] $java_home = undef
) {
contain java::params
$default_package_name = $distribution in $java::params::java ? {
false => undef,
default => $java::params::java[$distribution]['package'],
}
$use_java_package_name = $package ? {
undef => $default_package_name,
default => $package,
}
## Weird logic........
## If $java_alternative is set, use that.
## Elsif the DEFAULT package is being used, then use $default_alternative.
## Else undef
$use_java_alternative = $java_alternative ? {
undef => $use_java_package_name ? {
$default_package_name => $distribution in $java::params::java ? {
default => $java::params::java[$distribution]['alternative'],
false => undef,
},
default => undef,
},
default => $java_alternative,
}
## Same logic as $java_alternative above.
$use_java_alternative_path = $java_alternative_path ? {
undef => $use_java_package_name ? {
$default_package_name => $distribution in $java::params::java ? {
default => $java::params::java[$distribution]['alternative_path'],
false => undef,
},
default => undef,
},
default => $java_alternative_path,
}
$use_java_home = $java_home ? {
undef => $use_java_package_name ? {
$default_package_name => $distribution in $java::params::java ? {
default => $java::params::java[$distribution]['java_home'],
false => undef,
},
default => undef,
},
default => $java_home,
}
## This should only be required if we did not override all the information we need.
# One of the defaults is missing and its not intentional:
if ((
$use_java_package_name == undef or $use_java_alternative == undef or
$use_java_alternative_path == undef or $use_java_home == undef
) and (
!($distribution in $java::params::java)
)) {
fail("Java distribution ${distribution} is not supported. Missing default values.")
}
$jre_flag = $use_java_package_name ? {
/headless/ => '--jre-headless',
default => '--jre'
}
# TEMPORARY FIX: If no repos are configured on SLES, add openSUSE Leap as fallback
# This workaround is needed because GCP-provisioned SLES images are unregistered BYOS
# without any package repositories configured. Remove this once proper PAYG images are used.
if ($facts['os']['family'] in ['SLES', 'SUSE']) {
exec { 'Configure zypper repo for SLES':
path => '/bin:/usr/bin:/sbin:/usr/sbin',
command => 'zypper --non-interactive --gpg-auto-import-keys ar http://download.opensuse.org/distribution/leap/15.6/repo/oss/ opensuse-leap-fallback && zypper --non-interactive --gpg-auto-import-keys refresh',
unless => "zypper lr 2>/dev/null | grep -q 'opensuse-leap-fallback\\|http'",
logoutput => true,
}
-> Package['java']
}
if $facts['os']['family'] == 'Debian' {
# Needed for update-java-alternatives
package { 'java-common':
ensure => present,
before => Class['java::config'],
}
}
package { 'java':
ensure => $version,
install_options => $package_options,
name => $use_java_package_name,
before => Class['java::config'],
}
contain java::config # NB evalutation order is important here as the config class relies on variables from the base class having been set before it's evaluated.
}