Add Debian based distro support.

This change separates the package resource into an implementation
class following the composite class pattern.

In addition, the _real variables have been removed to prevent
confusion.

The validation functions have been updated to support a more
clear regular expression.

The debian package names are different, so conditional logic
is required to set a debian based distro specific variable
for the Java distribution name.

While the puppet resources work, there is currently an issue
on Lucid where the package REQUIRES interactive installation
to accept the license agreement.  This will need to be fixed
for fully automated deployment on apt based systems.
This commit is contained in:
Jeff McCune
2011-06-16 17:43:56 -07:00
parent 3b00510615
commit e09792cea9
3 changed files with 92 additions and 10 deletions

View File

@@ -16,18 +16,44 @@ class java(
$version = 'installed'
) {
# Cannot pass anonymous arrays to functions in 2.6.8
$v_distribution = [ '^jre$', '^jdk$' ]
# Must compare string values, not booleans.
validate_re($version, '^[._0-9a-zA-Z:-]+$')
validate_re($distribution, $v_distribution)
validate_re($distribution, '^jdk$|^jre$')
validate_re($version, 'installed|^[._0-9a-zA-Z:-]+$')
$version_real = $version
$distribution_real = $distribution
anchor { 'java::begin': }
anchor { 'java::end': }
case $operatingsystem {
centos, redhat, oel: {
class { 'java::package_redhat':
version => $version,
distribution => $distribution,
require => Anchor['java::begin'],
before => Anchor['java::end'],
}
}
debian, ubuntu: {
$distribution_debian = $distribution ? {
jdk => 'sun-java6-jdk',
jre => 'sun-java6-jre',
}
class { 'java::package_debian':
version => $version,
distribution => $distribution_debian,
require => Anchor['java::begin'],
before => Anchor['java::end'],
}
}
default: {
fail("operatingsystem $operatingsystem is not supported")
}
package { 'java':
ensure => $version_real,
name => "${distribution_real}",
}
}