Puppet Class: librenms::install

Defined in:
manifests/install.pp

Overview

Class: librenms::install

Handles installation of LibreNMS network monitoring tool

Parameters:

  • version (String)
  • user (String)
  • clone_source (String)
  • basedir (String)
  • php_config_overrides (Hash)


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

class librenms::install
(
  String  $version,
  String  $user,
  String  $clone_source,
  String  $basedir,
  Hash    $php_config_overrides
)
{

  $group = $user

  # Add libreNMS user
  user {'librenms-user':
    ensure     => 'present',
    name       => $user,
    home       => $basedir,
    managehome => false,
    system     => true,
  }

  vcsrepo { 'librenms-repo-clone':
    ensure   => present,
    revision => $version,
    path     => $basedir,
    provider => 'git',
    source   => $::librenms::clone_source,
    # Without this the rrd unit file would create /opt/librenms/rrd
    # directory and make this resource fail
    before   => Class['::librenms::rrdcached'],
    require  => User['librenms-user'],
  }

  # Set permissions and ACLs as described in
  #
  # <https://docs.librenms.org/Installation/Installation-Ubuntu-1804-Apache/>
  #
  file { $basedir:
    ensure  => 'directory',
    owner   => $user,
    group   => $group,
    mode    => '0770',
    recurse => false,
    require => Vcsrepo['librenms-repo-clone'],
  }

  package { 'acl':
    ensure => 'present',
  }

  # Set ACLs for the files that need to be editable for all
  $acl_dirs = ["${basedir}/rrd", "${basedir}/logs", "${basedir}/bootstrap/cache", "${basedir}/storage"].each |$dir| {
    posix_acl { $dir:
      action     => set,
      provider   => posixacl,
      permission => [ "default:group:${group}:rwx", "group:${group}:rwx"],
      recursive  => true,
      require    => [File[$basedir], Package['acl']],
    }
  }

  # Hack www-data to librenms group, if www-data user is defined
  User <| title == 'www-data' |> {
    groups  +> [$user, ],
    require +> [User['librenms-user'], ],
  }

  ensure_packages($::librenms::params::dependency_packages, {'ensure' => 'present'})
  ensure_packages($::librenms::params::dependency_pip3_packages,
    {
      'ensure'   => 'present',
      'provider' => 'pip3',
      require    => Package['python3-pip']
    }
  )
}