class exporters::node_exporter ( Boolean $enable = false, String $user = 'node_exporter', String $group = 'node_exporter', Boolean $manage_user = true, Boolean $manage_service = true, Stdlib::Host $addr = $facts['networking']['ip'], Stdlib::Port $port = 9100, Stdlib::Absolutepath $exec_path = '/usr/bin/node_exporter', Boolean $cleanup_old_node_exporter = false, ){ if $cleanup_old_node_exporter { # remove the symlink file {'/usr/local/bin/node_exporter': ensure => absent } # remove the /opt/node_exporter-1.8.1.linux-amd64 directory file {'/opt/node_exporter-1.8.1.linux-amd64': ensure => absent, recurse => true, force => true, } } if $enable { # install required package package {'node_exporter': ensure => installed, } # manage the user/group if $manage_user { group { $group: ensure => present, } user { $user: ensure => present, shell => '/usr/sbin/nologin', groups => $group, managehome => true, } } # manage the systemd service if $manage_service { # Use these in notifications or file resources systemd::unit_file { 'node_exporter.service': content => template('exporters/node_exporter.service.erb'), enable => true, active => true, subscribe => Package['node_exporter'], } } # manage consul service consul::service { 'node_exporter': service_name => 'node_exporter', address => $addr, port => $port, tags => [ 'metrics', 'metrics_scheme=http', 'metrics_job=node', ], checks => [ { id => 'node_exporter_http_check', name => 'node_exporter HTTP Check', http => "http://${facts['networking']['fqdn']}:${port}", method => 'GET', tls_skip_verify => true, interval => '10s', timeout => '1s', }, ], } } }