Puppet Class: puppet::server::compat

Inherits:
puppet::globals
Defined in:
manifests/server/compat.pp

Summary

Ensures compatibility and proper setup for Puppet Server

Overview

This class addresses specific compatibility issues and prepares the Puppet Server environment. It ensures required directories exist, installs necessary Ruby gems for Puppet Server, and configures ‘puppetserver.conf` to include settings such as additional Ruby load paths. This makes it possible to install puppetdb-termini package from Ubuntu 22.04 on Ubuntu 24.04

Examples:

include puppet::server::compat


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
# File 'manifests/server/compat.pp', line 10

class puppet::server::compat inherits puppet::globals {
  $gem_home = $puppet::globals::server_gem_home
  $config   = $puppet::globals::config

  if $puppet::globals::use_compat_mode {
    # Ensures required directories exist to prevent errors during puppetserver package installation, e.g.
    # error creating symbolic link '/usr/share/puppet/modules/mailalias.dpkg-tmp': No such file or directory
    file {
      ['/usr/share/puppet',
      '/usr/share/puppet/modules']:
        ensure => directory,
        before => Package['puppet-server'],
    }

    # Installs required Puppet Server gems
    # Lookup using eyaml lookup_key function is only supported when the hiera_eyaml library is present
    exec {
      default:
        path    => '/usr/bin:/bin',
        require => Package['puppet-server'],
        ;
      'puppetserver gem install hiera-eyaml --no-document --version 4.2.0':
        creates => "${gem_home}/gems/hiera-eyaml-4.2.0",
        ;
      'puppetserver gem install scanf --no-document --version 1.0.0':
        creates => "${gem_home}/gems/scanf-1.0.0",
        ;
    }

    # setup puppetserver.conf (Ubuntu 24.04) with puppetdb-termini from 22.04
    # include /opt/puppetlabs/puppet/lib/ruby/vendor_ruby into ruby-load-path
    file { "${config}/puppetserver.conf":
      ensure  => file,
      content => template('puppet/puppetserver.conf.erb'),
      require => Package['puppet-server'],
    }
  }
}