Refactor and reduce
The module in its previous incarnation was unnecessarily hard to read and use. This commit applies the "params" pattern in order to more clearly deliniate between logical variable selection and actual declarative configuration.
This commit is contained in:
@@ -4,111 +4,40 @@
|
|||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
#
|
#
|
||||||
|
# [*distribution*]
|
||||||
|
# The java distribution to install. Can be one of "jdk" or "jre".
|
||||||
|
#
|
||||||
|
# [*version*]
|
||||||
|
# The version of java to install. By default, this module simply ensures
|
||||||
|
# that java is present, and does not require a specific version.
|
||||||
|
#
|
||||||
# Actions:
|
# Actions:
|
||||||
#
|
#
|
||||||
# Requires:
|
# Requires:
|
||||||
#
|
#
|
||||||
# Sample Usage:
|
# Sample Usage:
|
||||||
#
|
#
|
||||||
# [Remember: No empty lines between comments and class definition]
|
|
||||||
class java(
|
class java(
|
||||||
$distribution = 'jdk',
|
$distribution = 'jdk',
|
||||||
$version = 'present'
|
$version = 'present'
|
||||||
) {
|
) {
|
||||||
|
include java::params
|
||||||
|
|
||||||
validate_re($distribution, '^jdk$|^jre$|^java.*$')
|
validate_re($version, 'present|installed|latest|^[._0-9a-zA-Z:-]+$')
|
||||||
validate_re($version, 'installed|^[._0-9a-zA-Z:-]+$')
|
|
||||||
|
|
||||||
anchor { 'java::begin': }
|
case $distribution {
|
||||||
anchor { 'java::end': }
|
default: { fail('distribution must be one of jdk, jre') }
|
||||||
|
'jdk': {
|
||||||
case $::osfamily {
|
$java_package_name = $java::params::jdk_package
|
||||||
|
|
||||||
'RedHat': {
|
|
||||||
|
|
||||||
if ($operatingsystem == 'Fedora') {
|
|
||||||
class { 'java::package_redhat':
|
|
||||||
version => $version,
|
|
||||||
distribution => 'java',
|
|
||||||
require => Anchor['java::begin'],
|
|
||||||
before => Anchor['java::end'],
|
|
||||||
}
|
}
|
||||||
} else {
|
'jre': {
|
||||||
class { 'java::package_redhat':
|
$java_package_name = $java::params::jre_package
|
||||||
version => $version,
|
|
||||||
distribution => $distribution,
|
|
||||||
require => Anchor['java::begin'],
|
|
||||||
before => Anchor['java::end'],
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
package { 'java':
|
||||||
|
ensure => $version,
|
||||||
'Debian': {
|
name => $java_package_name,
|
||||||
|
|
||||||
case $::lsbdistcodename {
|
|
||||||
squeeze, lucid: {
|
|
||||||
$distribution_debian = $distribution ? {
|
|
||||||
jdk => 'openjdk-6-jdk',
|
|
||||||
jre => 'openjdk-6-jre-headless',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wheezy, precise: {
|
|
||||||
$distribution_debian = $distribution ? {
|
|
||||||
jdk => 'openjdk-7-jdk',
|
|
||||||
jre => 'openjdk-7-jre-headless',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
fail("operatingsystem distribution ${::lsbdistcodename} is not supported")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class { 'java::package_debian':
|
|
||||||
version => $version,
|
|
||||||
distribution => $distribution_debian,
|
|
||||||
require => Anchor['java::begin'],
|
|
||||||
before => Anchor['java::end'],
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
'Solaris': {
|
|
||||||
|
|
||||||
$distribution_solaris = $distribution ? {
|
|
||||||
jdk => 'developer/java/jdk-7',
|
|
||||||
jre => 'runtime/java/jre-7',
|
|
||||||
}
|
|
||||||
|
|
||||||
class { 'java::package_solaris':
|
|
||||||
version => $version,
|
|
||||||
distribution => $distribution_solaris,
|
|
||||||
require => Anchor['java::begin'],
|
|
||||||
before => Anchor['java::end'],
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
'Suse': {
|
|
||||||
|
|
||||||
$distribution_suse = $distribution ? {
|
|
||||||
jdk => 'java-1_6_0-ibm-devel',
|
|
||||||
jre => 'java-1_6_0-ibm',
|
|
||||||
}
|
|
||||||
|
|
||||||
class { 'java::package_suse':
|
|
||||||
version => $version,
|
|
||||||
distribution => $distribution_suse,
|
|
||||||
require => Anchor['java::begin'],
|
|
||||||
before => Anchor['java::end'],
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
default: {
|
|
||||||
fail("osfamily ${::osfamily} is not supported")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
# Class: java::package_debian
|
|
||||||
#
|
|
||||||
# Implementation class of the Java package
|
|
||||||
# for debian based systems.
|
|
||||||
#
|
|
||||||
# This class is not meant to be used by the end user
|
|
||||||
# of the module. It is an implementation class
|
|
||||||
# of the composite Class[java]
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Actions:
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
#
|
|
||||||
# Sample Usage:
|
|
||||||
#
|
|
||||||
class java::package_debian(
|
|
||||||
$version,
|
|
||||||
$distribution
|
|
||||||
) {
|
|
||||||
|
|
||||||
package { 'java':
|
|
||||||
ensure => $version,
|
|
||||||
name => $distribution,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
# Class: java::package_redhat
|
|
||||||
#
|
|
||||||
# Implementation class of the Java package
|
|
||||||
# for redhat based systems.
|
|
||||||
#
|
|
||||||
# This class is not meant to be used by the end user
|
|
||||||
# of the module. It is an implementation class
|
|
||||||
# of the composite Class[java]
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Actions:
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
#
|
|
||||||
# Sample Usage:
|
|
||||||
#
|
|
||||||
class java::package_redhat(
|
|
||||||
$version,
|
|
||||||
$distribution
|
|
||||||
) {
|
|
||||||
|
|
||||||
package { 'java':
|
|
||||||
ensure => $version,
|
|
||||||
name => $distribution,
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# Class: java::package_solaris
|
|
||||||
#
|
|
||||||
# Implementation class of the Java package
|
|
||||||
# for Solaris based systems.
|
|
||||||
#
|
|
||||||
# This class is not meant to be used by the end user
|
|
||||||
# of the module. It is an implementation class
|
|
||||||
# of the composite Class[java]
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Actions:
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
#
|
|
||||||
# Sample Usage:
|
|
||||||
#
|
|
||||||
class java::package_solaris(
|
|
||||||
$version,
|
|
||||||
$distribution
|
|
||||||
) {
|
|
||||||
|
|
||||||
package { 'java':
|
|
||||||
ensure => $version,
|
|
||||||
name => $distribution,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# Class: java::package_suse
|
|
||||||
#
|
|
||||||
# Implementation class of the Java package
|
|
||||||
# for SUSE based systems.
|
|
||||||
#
|
|
||||||
# This class is not meant to be used by the end user
|
|
||||||
# of the module. It is an implementation class
|
|
||||||
# of the composite Class[java]
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Actions:
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
#
|
|
||||||
# Sample Usage:
|
|
||||||
#
|
|
||||||
class java::package_suse(
|
|
||||||
$version,
|
|
||||||
$distribution
|
|
||||||
) {
|
|
||||||
|
|
||||||
package { 'java':
|
|
||||||
ensure => $version,
|
|
||||||
name => $distribution,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
46
manifests/params.pp
Normal file
46
manifests/params.pp
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Class: java::params
|
||||||
|
#
|
||||||
|
# This class sets the value of two variables, jdk_package and jre_package,
|
||||||
|
# appropriate for the client system in question.
|
||||||
|
#
|
||||||
|
class java::params {
|
||||||
|
|
||||||
|
case $::osfamily {
|
||||||
|
default: { fail("unsupported platform ${::osfamily}") }
|
||||||
|
'RedHat': {
|
||||||
|
case $::operatingsystem {
|
||||||
|
default: { fail("unsupported os ${::operatingsystem}") }
|
||||||
|
'RedHat', 'CentOS': {
|
||||||
|
$jdk_package = 'java-1.7.0-openjdk-devel'
|
||||||
|
$jre_package = 'java-1.7.0-openjdk'
|
||||||
|
}
|
||||||
|
'Fedora': {
|
||||||
|
$jdk_package = 'java'
|
||||||
|
$jre_package = 'java'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'Debian': {
|
||||||
|
case $::lsbdistcodename {
|
||||||
|
default: { fail("unsupported release ${::lsbdistcodename}") }
|
||||||
|
'squeeze', 'lucid': {
|
||||||
|
$jdk_package = 'openjdk-6-jdk'
|
||||||
|
$jre_package = 'openjdk-6-jre-headless'
|
||||||
|
}
|
||||||
|
'wheezy', 'precise': {
|
||||||
|
$jdk_package = 'openjdk-7-jdk'
|
||||||
|
$jre_package = 'openjdk-7-jre-headless'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'Solaris': {
|
||||||
|
$jdk_package = 'developer/java/jdk-7'
|
||||||
|
$jre_package = 'runtime/java/jre-7'
|
||||||
|
}
|
||||||
|
'Suse': {
|
||||||
|
$jdk_package = 'java-1_6_0-ibm-devel'
|
||||||
|
$jre_package = 'java-1_6_0-ibm'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,4 @@
|
|||||||
node default {
|
|
||||||
|
|
||||||
notify { "alpha": } ->
|
|
||||||
class { 'java':
|
class { 'java':
|
||||||
distribution => 'jdk',
|
distribution => 'jdk',
|
||||||
version => 'latest',
|
version => 'latest',
|
||||||
} ->
|
|
||||||
notify { "omega": }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user