Puppet Class: kafka
- Inherits:
- kafka::params
- Defined in:
- manifests/init.pp
Overview
Class: kafka
This class will install kafka binaries
Requirements/Dependencies
Currently reequires the puppetlabs/stdlib module on the Puppet Forge in order to validate much of the the provided configuration.
Parameters
- version
-
The version of kafka that should be installed.
- scala_version
-
The scala version what kafka was built with.
- install_dir
-
The directory to install kafka to.
- mirror_url
-
The url where the kafka is downloaded from.
- install_java
-
Install java if it’s not already installed.
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 |
# File 'manifests/init.pp', line 27
class kafka (
$version = $kafka::params::version,
$scala_version = $kafka::params::scala_version,
$install_dir = $kafka::params::install_dir,
$mirror_url = $kafka::params::mirror_url,
$install_java = $kafka::params::install_java,
$package_dir = $kafka::params::package_dir
) inherits kafka::params {
validate_re($::osfamily, 'RedHat|Debian\b', "${::operatingsystem} not supported")
validate_re($version, '\d+\.\d+\.\d+\.*\d*', "${version} does not match semver")
validate_re($scala_version, '\d+\.\d+\.\d+\.*\d*', "${version} does not match semver")
validate_absolute_path($install_dir)
validate_re($mirror_url, '^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$', "${mirror_url} is not a valid url")
validate_bool($install_java)
validate_absolute_path($package_dir)
$basefilename = "kafka_${scala_version}-${version}.tgz"
$basename = regsubst($basefilename, '(.+)\.tgz$', '\1')
$package_url = "${mirror_url}/kafka/${version}/${basefilename}"
if $install_java {
class {'java':
distribution => 'jdk'
}
}
group { 'kafka':
ensure => present
}
user { 'kafka':
ensure => present,
shell => '/bin/bash',
require => Group['kafka']
}
file { $package_dir:
ensure => 'directory',
owner => 'kafka',
group => 'kafka'
}
file { $install_dir:
ensure => directory,
owner => 'kafka',
group => 'kafka',
alias => 'kafka-app-dir'
}
ensure_resource('package','wget', {'ensure' => 'installed'})
exec { 'download-kafka-package':
command => "wget -O ${package_dir}/${basefilename} ${package_url} 2> /dev/null",
path => ['/usr/bin', '/bin'],
creates => "${package_dir}/${basefilename}",
require => [ File[$package_dir], Package['wget'] ]
}
exec { 'untar-kafka-package':
command => "tar xfvz ${package_dir}/${basefilename} -C ${install_dir} --strip-components=1",
creates => "${install_dir}/${basename}/config",
alias => 'untar-kafka',
require => [ Exec['download-kafka-package'], File['kafka-app-dir'] ],
user => 'kafka',
path => ['/bin', '/usr/bin', '/usr/sbin']
}
file { '/usr/local/kafka':
ensure => link,
owner => 'kafka',
group => 'kafka',
target => $install_dir
}
}
|