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 })
}
}
}
|