Puppet Class: kafka::broker::install

Defined in:
manifests/broker/install.pp

Overview

Class kafka::broker::install

This private class installs a kafka broker package and it’s dependencies



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
# File 'manifests/broker/install.pp', line 5

class kafka::broker::install {

  $basefilename = "kafka_${kafka::broker::scala_version}-${kafka::broker::version}.tgz"
  $basename = regsubst($basefilename, '(.+)\.tgz$', '\1')
  $package_url = "${kafka::broker::mirror_url}/kafka/${kafka::broker::version}/${basefilename}"
  $install_dir = "/usr/local/kafka-${kafka::broker::scala_version}-${kafka::broker::version}"

  if $caller_module_name != $module_name {
    fail("Use of private class ${name} by ${caller_module_name}")
  }

  if $kafka::broker::install_java {
    class {'java':
      distribution => 'jdk'
    }
  }

  group { 'kafka':
    ensure => present
  }

  user { 'kafka':
    ensure  => present,
    shell   => '/bin/bash',
    require => Group['kafka']
  }

  file { $kafka::broker::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 ${kafka::broker::package_dir}/${basefilename} ${package_url} 2> /dev/null",
    path    => ['/usr/bin', '/bin'],
    creates => "${kafka::broker::package_dir}/${basefilename}",
    require => [ File[$kafka::broker::package_dir], Package['wget'] ]
  }

  exec { 'untar-kafka-package':
    command => "tar xfvz ${kafka::broker::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
  }
}