Puppet Class: icinga::agentless

Defined in:
manifests/agentless.pp

Summary

Setup an agentless monitoring via SSH.

Overview

Parameters:

  • user (String[1])

    User name to login.

  • manage_user (Boolean)

    Wether or not to manage user.

  • ssh_key_type (Enum['ecdsa','ed25519','rsa'])

    SSH key type.

  • ssh_public_key (String[1])

    Public SSH key of ´ssh_key_type´ for ´user´.

  • extra_packages (Array[String[1]]) (defaults to: [])

    Install extra packages such as plugins.



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
# File 'manifests/agentless.pp', line 19

class icinga::agentless (
  String[1]                     $user,
  Boolean                       $manage_user,
  Enum['ecdsa','ed25519','rsa'] $ssh_key_type,
  String[1]                     $ssh_public_key,
  Array[String[1]]              $extra_packages = [],
) {
  if defined(Class['icinga']) {
    if $user != $icinga2::globals::user {
      $user_name  = $user
      $user_group = undef
      $user_home  = "/home/${user}"
    } else {
      $user_name  = $icinga2::globals::user
      $user_group = $icinga2::globals::group
      $user_home  = $icinga::icinga_user_homedir

      file { "/home/${user}":
        ensure  => absent,
        recurse => true,
        force   => true,
      }
    }

    if $manage_user { User[$user_name] -> Package[$icinga2::globals::package_name] }
    Package[$icinga2::globals::package_name] -> Ssh_authorized_key["${user_name}@${$facts['networking']['fqdn']}"]
  } else {
    $user_name  = $user
    $user_group = if $facts['os']['family'] != 'suse' { undef } else { $user }
    $user_home  = "/home/${user}"
  }

  if $manage_user {
    if $facts['os']['family'] == 'suse' {
      group { $user_group:
        system => true,
      }
    }

    user { $user_name:
      ensure     => present,
      gid        => $user_group,
      system     => true,
      managehome => true,
      home       => $user_home,
      shell      => '/bin/bash',
    }
  }

  ssh_authorized_key { "${user_name}@${$facts['networking']['fqdn']}":
    ensure => present,
    user   => $user_name,
    key    => $ssh_public_key,
    type   => $ssh_key_type,
  }

  if versioncmp(load_module_metadata('stdlib')['version'], '9.0.0') < 0 {
    ensure_packages($extra_packages, { 'ensure' => 'present' })
  } else {
    stdlib::ensure_packages($extra_packages, { 'ensure' => 'present' })
  }
}