228 lines
6.6 KiB
Puppet
228 lines
6.6 KiB
Puppet
# Defined Type java::sap
|
|
#
|
|
# @summary
|
|
# Install one or more versions of SAPJVM or Sapmachine
|
|
#
|
|
# @param ensure
|
|
# Install or remove the package.
|
|
#
|
|
# @param version
|
|
# Version of Java to install, e.g. '8' or '9'. Default values for full versions will be used.
|
|
#
|
|
# @param version_full
|
|
# Major version which should be installed, e.g. '8.1.063' or '11.0.7'. If used, "version" parameter is ignored.
|
|
#
|
|
# @param java
|
|
# Type of Java Edition to install, jdk or jre.
|
|
#
|
|
# @param proxy_server
|
|
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
|
|
#
|
|
# @param proxy_type
|
|
# Proxy server type (none|http|https|ftp). (passed to archive)
|
|
#
|
|
# @param basedir
|
|
# Directory under which the installation will occur. If not set, defaults to
|
|
# /usr/lib/jvm for Debian and /usr/java for RedHat.
|
|
#
|
|
# @param manage_basedir
|
|
# Whether to manage the basedir directory. Defaults to false.
|
|
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
|
|
#
|
|
# @param manage_symlink
|
|
# Whether to manage a symlink that points to the installation directory. Defaults to false.
|
|
#
|
|
# @param symlink_name
|
|
# The name for the optional symlink in the installation directory.
|
|
#
|
|
define java::sap (
|
|
$ensure = 'present',
|
|
$version = '8',
|
|
$version_full = undef,
|
|
$java = 'jdk',
|
|
$proxy_server = undef,
|
|
$proxy_type = undef,
|
|
$basedir = undef,
|
|
$manage_basedir = true,
|
|
$manage_symlink = false,
|
|
$symlink_name = undef,
|
|
) {
|
|
|
|
# archive module is used to download the java package
|
|
include ::archive
|
|
|
|
# validate java edition to download
|
|
if $java !~ /(jre|jdk)/ {
|
|
fail('java must be either jre or jdk.')
|
|
}
|
|
|
|
# determine version and installation path
|
|
if $version_full {
|
|
|
|
$_version_array = $version_full.scanf('%i')
|
|
$_version_int = $_version_array[0]
|
|
|
|
$_version_full = $version_full
|
|
|
|
} else {
|
|
$_version = $version
|
|
$_version_int = Numeric($_version)
|
|
# use default versions if full version parameter is not provided
|
|
case $version {
|
|
'7' : {
|
|
$_version_full = '7.1.070'
|
|
if ($java != 'jdk') {
|
|
fail('java parameter is not jdk. jre is not supported on version 7')
|
|
}
|
|
}
|
|
'8' : {
|
|
$_version_full = '8.1.063'
|
|
if ($java != 'jdk') {
|
|
fail('java parameter is not jdk. jre is not supported on version 8')
|
|
}
|
|
}
|
|
'11' : {
|
|
$_version_full = '11.0.7'
|
|
}
|
|
'14' : {
|
|
$_version_full = '14.0.1'
|
|
}
|
|
default : {
|
|
fail("${version} not yet supported by module")
|
|
}
|
|
}
|
|
}
|
|
|
|
# extracted folders look like this:
|
|
# sapjvm_8
|
|
# sapmachine-jdk-11.0.7
|
|
if ($_version_int == 7 or $_version_int == 8) {
|
|
$_creates_folder = "sapjvm_${_version_int}"
|
|
} else {
|
|
$_creates_folder = "sapmachine-${java}-${_version_full}"
|
|
}
|
|
|
|
# determine destination directory based on OS
|
|
case $facts['kernel'] {
|
|
'Linux' : {
|
|
case $facts['os']['family'] {
|
|
'RedHat', 'Amazon' : {
|
|
if $basedir {
|
|
$_basedir = $basedir
|
|
} else {
|
|
$_basedir = '/usr/java'
|
|
}
|
|
}
|
|
'Debian' : {
|
|
if $basedir {
|
|
$_basedir = $basedir
|
|
} else {
|
|
$_basedir = '/usr/lib/jvm'
|
|
}
|
|
}
|
|
default : {
|
|
fail ("unsupported os family ${$facts['os']['name']}") }
|
|
}
|
|
|
|
$creates_path = "${_basedir}/${_creates_folder}"
|
|
}
|
|
default : {
|
|
fail ( "unsupported platform ${$facts['kernel']}" ) }
|
|
}
|
|
|
|
$_os_architecture = $facts['os']['architecture'] ? {
|
|
undef => $facts['architecture'],
|
|
default => $facts['os']['architecture']
|
|
}
|
|
|
|
if ($_os_architecture != 'x86_64' and $_os_architecture != 'amd64') {
|
|
fail ("unsupported platform ${_os_architecture}")
|
|
}
|
|
|
|
# download links look like this (examples):
|
|
# https://tools.hana.ondemand.com/additional/sapjvm-8.1.063-linux-x64.zip
|
|
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz
|
|
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz
|
|
# https://github.com/SAP/SapMachine/releases/download/sapmachine-14.0.1/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz
|
|
|
|
# cookie is currently at version 3.1, but may be changed one day. It is only required for download at SAP.
|
|
# by using this module you agree with the EULA presented at tools.hana.ondemand.com download page!
|
|
# Github does not require it
|
|
|
|
if ( $_version_int == 7 or $_version_int == 8 ) {
|
|
# sapjvm download
|
|
$archive_filename = "sapjvm-${_version_full}-linux-x64.zip"
|
|
$source = "https://tools.hana.ondemand.com/additional/${archive_filename}"
|
|
$cookie = 'eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt'
|
|
|
|
if (!defined(Package['unzip'])) {
|
|
package { 'unzip':
|
|
ensure => 'present',
|
|
before => Archive["/tmp/${archive_filename}"],
|
|
}
|
|
}
|
|
} else {
|
|
$archive_filename = "sapmachine-${java}-${_version_full}_linux-x64_bin.tar.gz"
|
|
$source = "https://github.com/SAP/SapMachine/releases/download/sapmachine-${_version_full}/${archive_filename}"
|
|
$cookie = undef
|
|
|
|
if (!defined(Package['tar'])) {
|
|
package { 'tar':
|
|
ensure => 'present',
|
|
before => Archive["/tmp/${archive_filename}"],
|
|
}
|
|
}
|
|
if (!defined(Package['gzip'])) {
|
|
package { 'gzip':
|
|
ensure => 'present',
|
|
before => Archive["/tmp/${archive_filename}"],
|
|
}
|
|
}
|
|
}
|
|
|
|
case $ensure {
|
|
'present' : {
|
|
case $facts['kernel'] {
|
|
'Linux' : {
|
|
if ($manage_basedir or $facts['os']['family'] == 'Debian'){
|
|
if (!defined(File[$_basedir])) {
|
|
file { $_basedir:
|
|
ensure => 'directory',
|
|
before => Archive["/tmp/${archive_filename}"],
|
|
}
|
|
}
|
|
}
|
|
|
|
archive { "/tmp/${archive_filename}" :
|
|
ensure => present,
|
|
source => $source,
|
|
extract => true,
|
|
extract_path => $_basedir,
|
|
cleanup => false,
|
|
creates => $creates_path,
|
|
cookie => $cookie,
|
|
proxy_server => $proxy_server,
|
|
proxy_type => $proxy_type,
|
|
}
|
|
|
|
if ($manage_symlink and $symlink_name) {
|
|
file { "${_basedir}/${symlink_name}":
|
|
ensure => link,
|
|
target => $creates_path,
|
|
require => Archive["/tmp/${archive_filename}"],
|
|
}
|
|
}
|
|
|
|
}
|
|
default : {
|
|
fail ("unsupported platform ${$facts['kernel']}")
|
|
}
|
|
}
|
|
}
|
|
default : {
|
|
notice ("Action ${ensure} not supported.")
|
|
}
|
|
}
|
|
|
|
}
|