Puppet Class: iop::core_kafka

Defined in:
manifests/core_kafka.pp

Overview

Class: iop::core_kafka

Install and configure kafka

Parameters:

$image

The container image

$ensure

Ensure service is present or absent

Parameters:

  • image (String[1]) (defaults to: 'quay.io/strimzi/kafka:latest-kafka-3.7.1')
  • ensure (Enum['present', 'absent']) (defaults to: 'present')


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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'manifests/core_kafka.pp', line 11

class iop::core_kafka (
  String[1] $image = 'quay.io/strimzi/kafka:latest-kafka-3.7.1',
  Enum['present', 'absent'] $ensure = 'present',
) {
  include podman
  require iop::core_network

  podman::secret { 'iop-core-kafka-init-start':
    ensure => $ensure,
    secret => Sensitive(file('iop/kafka/init-start.sh')),
  }

  podman::secret { 'iop-core-kafka-server-properties':
    ensure => $ensure,
    secret => Sensitive(file('iop/kafka/kraft')),
  }

  podman::secret { 'iop-core-kafka-init':
    ensure => $ensure,
    secret => Sensitive(file('iop/kafka/init')),
  }

  podman::volume { 'iop-core-kafka-data':
    ensure => $ensure,
  }

  podman::quadlet { 'iop-core-kafka':
    ensure       => $ensure,
    quadlet_type => 'container',
    user         => 'root',
    defaults     => {},
    require      => [
      Podman::Volume['iop-core-kafka-data'],
      Podman::Network['iop-core-network'],
    ],
    settings     => {
      'Unit'      => {
        'Description' => 'IOP Core Kafka Container',
      },
      'Container' => {
        'Image'         => $image,
        'ContainerName' => 'iop-core-kafka',
        'Network'       => 'iop-core-network',
        'Exec'          => 'sh bin/init-start.sh',
        'Environment'   => [
          'LOG_DIR=/tmp/kafka-logs',
          'KAFKA_NODE_ID=1',
        ],
        'Volume'        => [
          'iop-core-kafka-data:/var/lib/kafka/data',
        ],
        'Secret'        => [
          'iop-core-kafka-init-start,target=/opt/kafka/bin/init-start.sh',
          'iop-core-kafka-server-properties,target=/opt/kafka/config/kraft/server.properties',
          'iop-core-kafka-init,target=/opt/kafka/init.sh',
        ],
      },
      'Service'   => {
        'Environment' => 'REGISTRY_AUTH_FILE=/etc/foreman/registry-auth.json',
        'Restart'     => 'on-failure',
      },
      'Install'   => {
        'WantedBy' => ['multi-user.target', 'default.target'],
      },
    },
  }

  Exec { 'kafka-init':
    command => "podman run --network=iop-core-network --secret iop-core-kafka-init,target=/opt/kafka/init.sh,mode=0755 ${image} /opt/kafka/init.sh --create",
    unless  => "podman run --network=iop-core-network --secret iop-core-kafka-init,target=/opt/kafka/init.sh,mode=0755 ${image} /opt/kafka/init.sh --check",
    require => [
      Podman::Quadlet['iop-core-kafka'],
      Podman::Network['iop-core-network'],
      Podman::Secret['iop-core-kafka-init']
    ],
    path    => ['/usr/bin', '/usr/sbin'],
  }
}