Puppet Class: profile::zookeeper::server

Defined in:
modules/profile/manifests/zookeeper/server.pp

Overview

SPDX-License-Identifier: Apache-2.0

Class profile::zookeeper::server

Parameters:

  • clusters (Hash) (defaults to: lookup('zookeeper_clusters'))
  • cluster_name (String) (defaults to: lookup('profile::zookeeper::cluster_name'))
  • own_fqdn (Stdlib::Fqdn) (defaults to: lookup('profile::zookeeper::own_fqdn', {default_value => $facts['networking']['fqdn']}))
  • max_client_connections (Integer) (defaults to: lookup('profile::zookeeper::max_client_connections', {default_value => 1024}))
  • sync_limit (Integer) (defaults to: lookup('profile::zookeeper::sync_limit', {default_value => 8}))
  • enable_tls (Boolean) (defaults to: lookup('profile::zookeeper::enable_tls', {default_value => false}))
  • tls_keystore (Optional[Stdlib::Unixpath]) (defaults to: lookup('profile::zookeeper::tls_keystore', {default_value => undef }))
  • tls_truststore (Optional[Stdlib::Unixpath]) (defaults to: lookup('profile::zookeeper::tls_truststore', {default_value => undef }))
  • tls_password (Optional[String]) (defaults to: lookup('profile::zookeeper::tls_password', {default_value => undef }))
  • monitoring_enabled (Boolean) (defaults to: lookup('profile::zookeeper::monitoring_enabled', {default_value => false}))
  • monitoring_contact_group (String) (defaults to: lookup('profile::zookeeper::monitoring_contact_group', {default_value => 'admins'}))
  • is_critical (Boolean) (defaults to: lookup('profile::zookeeper::is_critical', {default_value => false}))
  • prometheus_instance (String) (defaults to: lookup('profile::zookeeper::prometheus_instance', {default_value => 'ops'}))
  • override_java_home (Optional[Stdlib::Unixpath]) (defaults to: lookup('profile::zookeeper::override_java_home', {default_value => undef }))
  • extra_java_opts (Optional[String]) (defaults to: lookup('profile::zookeeper::server::extra_java_opts', {default_value => undef }))
  • use_zookeeper34 (Boolean) (defaults to: lookup('profile::zookeeper::use_zookeeper34', {default_value => false}))


4
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
# File 'modules/profile/manifests/zookeeper/server.pp', line 4

class profile::zookeeper::server (
    Hash $clusters                       = lookup('zookeeper_clusters'),
    String $cluster_name                 = lookup('profile::zookeeper::cluster_name'),
    Stdlib::Fqdn $own_fqdn               = lookup('profile::zookeeper::own_fqdn', {default_value => $facts['networking']['fqdn']}),  # lint:ignore:wmf_styleguide
    Integer $max_client_connections      = lookup('profile::zookeeper::max_client_connections', {default_value => 1024}),
    Integer $sync_limit                  = lookup('profile::zookeeper::sync_limit', {default_value => 8}),
    Boolean $enable_tls                  = lookup('profile::zookeeper::enable_tls', {default_value => false}),
    Optional[Stdlib::Unixpath] $tls_keystore = lookup('profile::zookeeper::tls_keystore', {default_value => undef }),
    Optional[Stdlib::Unixpath] $tls_truststore = lookup('profile::zookeeper::tls_truststore', {default_value => undef }),
    Optional[String] $tls_password       = lookup('profile::zookeeper::tls_password', {default_value => undef }),
    Boolean $monitoring_enabled          = lookup('profile::zookeeper::monitoring_enabled', {default_value => false}),
    String $monitoring_contact_group     = lookup('profile::zookeeper::monitoring_contact_group', {default_value => 'admins'}),
    Boolean $is_critical                 = lookup('profile::zookeeper::is_critical', {default_value => false}),
    String $prometheus_instance          = lookup('profile::zookeeper::prometheus_instance', {default_value => 'ops'}),
    Optional[Stdlib::Unixpath] $override_java_home = lookup('profile::zookeeper::override_java_home', {default_value => undef }),
    Optional[String] $extra_java_opts    = lookup('profile::zookeeper::server::extra_java_opts', {default_value => undef }),
    Boolean $use_zookeeper34             = lookup('profile::zookeeper::use_zookeeper34', {default_value => false}),
){
    require profile::java
    require profile::zookeeper::monitoring::server

    if $extra_java_opts {
        $extra_java_opts_ = "${profile::zookeeper::monitoring::server::java_opts} ${extra_java_opts}"
    } else {
        $extra_java_opts_ = $profile::zookeeper::monitoring::server::java_opts
    }

    $java_home = pick($override_java_home, $profile::java::default_java_home)

    class { 'zookeeper':
        hosts                  => $clusters[$cluster_name]['hosts'],
        sync_limit             => $sync_limit,
        max_client_connections => $max_client_connections,
        enable_tls             => $enable_tls,
        tls_keystore           => $tls_keystore,
        tls_truststore         => $tls_truststore,
        tls_password           => $tls_password,
        use_zookeeper34        => $use_zookeeper34,
    }

    class { 'zookeeper::server':
        own_fqdn            => $own_fqdn,
        cleanup_script_args => '-n 10',
        java_opts           => "-Xms1g -Xmx1g ${extra_java_opts_}",
        java_home           => $java_home,
        enable_tls          => $enable_tls,
        use_zookeeper34     => $use_zookeeper34,
    }

    if $monitoring_enabled {
        # Alert if Zookeeper Server is not running.
        nrpe::monitor_service { 'zookeeper':
            description         => 'Zookeeper Server',
            nrpe_command        => '/usr/lib/nagios/plugins/check_procs -c 1:1 -C java -a "org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/conf/zoo.cfg"',
            critical            => $is_critical,
            contact_group       => $monitoring_contact_group,
            notes_url           => 'https://wikitech.wikimedia.org/wiki/Zookeeper',
            migration_task      => 'T309012',
            enable_icinga_check => false,
        }
    }
}