Puppet Class: librenms::install
- Defined in:
- manifests/install.pp
Overview
Class: librenms::install
Handles installation of LibreNMS network monitoring tool
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']
}
)
}
|