puppet-prod/modules/exporters/manifests/frr_exporter.pp
Ben Vincent fcd1b049d6 feat: ensure frr_exporter can read ospf socket (#391)
- add execute permission to frr socket directory

Reviewed-on: #391
2025-09-13 15:08:32 +10:00

77 lines
2.0 KiB
Puppet

class exporters::frr_exporter (
Boolean $enable = false,
String $user = 'frr_exporter',
String $group = 'frr_exporter',
Boolean $manage_user = true,
Boolean $manage_service = true,
Stdlib::Port $port = 9342,
Stdlib::Absolutepath $exec_path = '/usr/bin/frr_exporter',
Stdlib::Absolutepath $socket_dir = '/var/run/frr',
){
if $enable {
# install required package
package {'frr_exporter':
ensure => installed,
}
# ensure the frr_exporter user can read the directory
file { $socket_dir:
ensure => directory,
owner => 'frr',
group => 'frr',
mode => '0751',
}
# manage the user/group
if $manage_user {
group { $group:
ensure => present,
}
user { $user:
ensure => present,
shell => '/usr/sbin/nologin',
groups => [$group, 'frrvty'],
managehome => true,
}
}
# manage the systemd service
if $manage_service {
# Use these in notifications or file resources
systemd::unit_file { 'frr_exporter.service':
content => template('exporters/frr_exporter.service.erb'),
enable => true,
active => true,
subscribe => Package['frr_exporter'],
}
}
# manage consul service
consul::service { 'frr_exporter':
service_name => 'frr_exporter',
address => $facts['networking']['ip'],
port => $port,
tags => [
'metrics',
'metrics_scheme=http',
'metrics_job=frr',
],
checks => [
{
id => 'frr_exporter_http_check',
name => 'frr_exporter HTTP Check',
http => "http://${facts['networking']['fqdn']}:${port}",
method => 'GET',
tls_skip_verify => true,
interval => '10s',
timeout => '1s',
},
],
}
}
}