Page MenuHomeSoftware Heritage

init.pp
No OneTemporary

# Author:: Liam Bennett (mailto:lbennett@opentable.com)
# Copyright:: Copyright (c) 2013 OpenTable Inc
# License:: MIT
# == Class: kafka
#
# This class will install kafka binaries
#
# === Requirements/Dependencies
#
# Currently requires 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.
#
# [*package_dir*]
# The directory to install kafka.
#
# [*package_name*]
# Package name, when installing kafka from a package.
#
# [*package_ensure*]
# Package version (or 'present', 'absent', 'latest'), when installing kafka from a package.
#
# [*user*]
# User to run kafka as.
#
# [*group*]
# Group to run kafka as.
#
# [*user_id*]
# Create the kafka user with this ID.
#
# [*system_user*]
# Whether the kafka user is a system user or not.
#
# [*group_id*]
# Create the kafka group with this ID.
#
# [*system_group*]
# Whether the kafka group is a system group or not.
#
# [*manage_user*]
# Create the kafka user if it's not already present.
#
# [*manage_group*]
# Create the kafka group if it's not already present.
#
# [*config_dir*]
# The directory to create the kafka config files to.
#
# [*log_dir*]
# The directory for kafka log files.
#
# === Examples
#
#
class kafka (
String $version = $kafka::params::version,
String $scala_version = $kafka::params::scala_version,
Stdlib::Absolutepath $install_dir = $kafka::params::install_dir,
Stdlib::HTTPUrl $mirror_url = $kafka::params::mirror_url,
Boolean $install_java = $kafka::params::install_java,
Stdlib::Absolutepath $package_dir = $kafka::params::package_dir,
Optional[String] $package_name = $kafka::params::package_name,
Optional[String] $mirror_subpath = $kafka::params::mirror_subpath,
Optional[String] $proxy_server = $kafka::params::proxy_server,
Optional[String] $proxy_port = $kafka::params::proxy_port,
Optional[String] $proxy_host = $kafka::params::proxy_host,
Optional[String] $proxy_type = $kafka::params::proxy_type,
String $package_ensure = $kafka::params::package_ensure,
String $user = $kafka::params::user,
String $group = $kafka::params::group,
Boolean $system_user = $kafka::params::system_user,
Boolean $system_group = $kafka::params::system_group,
Optional[Integer] $user_id = $kafka::params::user_id,
Optional[Integer] $group_id = $kafka::params::group_id,
Boolean $manage_user = $kafka::params::manage_user,
Boolean $manage_group = $kafka::params::manage_group,
Stdlib::Absolutepath $config_dir = $kafka::params::config_dir,
Stdlib::Absolutepath $log_dir = $kafka::params::log_dir,
Optional[String] $install_mode = $kafka::params::install_mode,
) inherits kafka::params {
if $install_java {
class { '::java':
distribution => 'jdk',
}
}
if $manage_group {
group { $group:
ensure => present,
gid => $group_id,
system => $system_group,
}
}
if $manage_user {
user { $user:
ensure => present,
shell => '/bin/bash',
require => Group[$group],
uid => $user_id,
system => $system_user,
}
}
file { $config_dir:
ensure => directory,
owner => 'root',
group => 'root',
}
file { $log_dir:
ensure => directory,
owner => $user,
group => $group,
require => [
Group[$group],
User[$user],
],
}
if $package_name == undef {
include ::archive
$mirror_path = $mirror_subpath ? {
# if mirror_subpath was not changed,
# we adapt it for the version
$kafka::params::mirror_subpath => "kafka/${version}",
# else, we just take whatever was supplied:
default => $mirror_subpath,
}
$basefilename = "kafka_${scala_version}-${version}.tgz"
$package_url = "${mirror_url}${mirror_path}/${basefilename}"
$source = $mirror_url ?{
/tgz$/ => $mirror_url,
default => $package_url,
}
$install_directory = $install_dir ? {
# if install_dir was not changed,
# we adapt it for the scala_version and the version
$kafka::params::install_dir => "/opt/kafka-${scala_version}-${version}",
# else, we just take whatever was supplied:
default => $install_dir,
}
file { $package_dir:
ensure => directory,
owner => $user,
group => $group,
require => [
Group[$group],
User[$user],
],
}
file { $install_directory:
ensure => directory,
owner => $user,
group => $group,
mode => $install_mode,
require => [
Group[$group],
User[$user],
],
}
file { '/opt/kafka':
ensure => link,
target => $install_directory,
require => File[$install_directory],
}
if $proxy_server == undef and $proxy_host != undef and $proxy_port != undef {
$final_proxy_server = "${proxy_host}:${proxy_port}"
} else {
$final_proxy_server = $proxy_server
}
archive { "${package_dir}/${basefilename}":
ensure => present,
extract => true,
extract_command => 'tar xfz %s --strip-components=1',
extract_path => $install_directory,
source => $source,
creates => "${install_directory}/config",
cleanup => true,
proxy_server => $final_proxy_server,
proxy_type => $proxy_type,
user => $user,
group => $group,
require => [
File[$package_dir],
File[$install_directory],
Group[$group],
User[$user],
],
before => File[$config_dir],
}
} else {
package { $package_name:
ensure => $package_ensure,
before => File[$config_dir],
}
}
}

File Metadata

Mime Type
text/plain
Expires
Jun 4 2025, 7:39 PM (10 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3303674

Event Timeline