Puppet Class: otelcol::config

Inherits:
otelcol
Defined in:
manifests/config.pp

Overview

Class: otelcol::config

Templated generation of otelcol.conf



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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'manifests/config.pp', line 5

class otelcol::config inherits otelcol {
  assert_private()

  # due to inconsistent Naming in original packages, we need some handling here
  $package_default_username = ($otelcol::service_name) ? {
    'otelcol' => 'otel',
    default   => $otelcol::service_name,
  }
  $real_config_file_owner = ($otelcol::config_file_owner) ? {
    undef   => $package_default_username,
    default => $otelcol::config_file_owner
  }
  $real_config_file_group = ($otelcol::config_file_group) ? {
    undef   => $package_default_username,
    default => $otelcol::config_file_group
  }
  $proxy_host = $otelcol::proxy_host
  $proxy_port = $otelcol::proxy_port
  $metrics_readers = $otelcol::telemetry_exporters.map |Hash $hash_element| {
    $hash_element.map |String $name, Hash $value| {
      $type = $value ? {
        Otelcol::Telemetry_exporter::Pull     => 'pull',
        Otelcol::Telemetry_exporter::Periodic => 'periodic',
      }
      $element = { $type => { 'exporter' => { $name => $value } } }
      $element
    }
  }.flatten
  $component = {
    'service' => {
      'telemetry' => {
        'logs' => $otelcol::log_options,
        'metrics' => {
          'level' => $otelcol::metrics_level,
          'readers' => $metrics_readers,
        },
      },
    },
  }

  concat { 'otelcol-config' :
    ensure  => present,
    path    => $otelcol::config_file,
    format  => 'yaml',
    owner   => $real_config_file_owner,
    group   => $real_config_file_group,
    mode    => $otelcol::config_file_mode,
    require => Package['otelcol'],
  }
  concat::fragment { 'otelcol-config-header' :
    target  => 'otelcol-config',
    order   => 0,
    content => '# File Managed by Puppet',
  }

  concat::fragment { 'otelcol-config-baseconfig' :
    target  => 'otelcol-config',
    order   => 10000,
    content => stdlib::to_yaml($component),
  }

  file { 'otelcol-environment' :
    ensure  => 'file',
    path    => $otelcol::environment_file,
    content => template('otelcol/environment.conf.erb'),
    owner   => $real_config_file_owner,
    group   => $real_config_file_group,
    mode    => $otelcol::config_file_mode,
  }

  $otelcol::receivers.each |String $rname, Hash $rvalue| {
    if $rvalue['config'] =~ Hash {
      ensure_resource('otelcol::receiver', $rname, $rvalue)
    } else {
      ensure_resource('otelcol::receiver', $rname, { 'config' => $rvalue })
    }
  }

  $otelcol::processors.each |String $rname, Hash $rvalue| {
    if $rvalue['config'] =~ Hash {
      ensure_resource('otelcol::processor', $rname, $rvalue)
    } else {
      ensure_resource('otelcol::processor', $rname, { 'config' => $rvalue })
    }
  }

  $otelcol::exporters.each |String $rname, Hash $rvalue| {
    if $rvalue['config'] =~ Hash {
      ensure_resource('otelcol::exporter', $rname, $rvalue)
    }
    else {
      ensure_resource('otelcol::exporter', $rname, { 'config' => $rvalue })
    }
  }

  $otelcol::pipelines.each |String $rname, Hash $rvalue| {
    if $rvalue['config'] =~ Hash {
      ensure_resource('otelcol::pipeline', $rname, $rvalue)
    }
    else {
      ensure_resource('otelcol::pipeline', $rname, { 'config' => $rvalue })
    }
  }

  $otelcol::extensions.each |String $rname, Hash $rvalue| {
    if $rvalue['config'] =~ Hash {
      ensure_resource('otelcol::extension', $rname, $rvalue)
    }
    else {
      ensure_resource('otelcol::extension', $rname, { 'config' => $rvalue })
    }
  }
}