Puppet Class: puppet::repo

Inherits:
puppet::globals
Defined in:
manifests/repo.pp

Summary

Setup Puppet Platform repository

Overview

puppet::repo

Setup Puppet Platform repository

family, as set in `puppet::params`.

Examples:

include puppet::repo

Parameters:

  • package_name (String) (defaults to: $puppet::globals::repo_name)
    String

    The name of the ‘puppet-release` package to be installed, defaulting

    to ‘$platform_name-release` from `puppet::globals`.

  • decommission_packages (Array[String]) (defaults to: $puppet::globals::decommission_packages)

    List of old or deprecated Puppet platform packages to remove before installing ‘puppet-release`. Defaults to `puppet::globals::decommission_packages`.

  • package_filename (String) (defaults to: $puppet::globals::repo_filename)

    The filename for the downloaded ‘puppet-release` package, derived from `puppet::globals::repo_filename`.

  • platform_repository (String) (defaults to: $puppet::globals::platform_repository)

    The URL for the platform-specific Puppet repository, constructed from ‘puppet::globals::platform_repository`.

  • package_provider (String) (defaults to: $puppet::params::package_provider)

    The package provider to use for installing ‘puppet-release`, typically `rpm` or `dpkg` based on the operating system



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

class puppet::repo (
  String  $package_name = $puppet::globals::repo_name,
  Array[String] $decommission_packages = $puppet::globals::decommission_packages,
  String $package_filename = $puppet::globals::repo_filename,
  String $platform_repository = $puppet::globals::platform_repository,
  String $package_provider = $puppet::params::package_provider,
) inherits puppet::globals {
  include puppet
  $manage_repo = $puppet::manage_repo

  $tmpdir = $puppet::globals::tmpdir
  $package_source = $puppet::globals::repo_source
  $package_check = $puppet::globals::repo_check

  if $manage_repo {
    # use own tmp directory to not interferre with puppet_agent module
    file { $tmpdir:
      ensure => directory,
    }

    exec { 'puppet-release':
      command => "curl ${platform_repository} -f -s -o ${package_source}",
      cwd     => $tmpdir,
      path    => '/bin:/usr/bin',
      creates => $package_source,
      unless  => $package_check,
      require => File[$tmpdir],
    }

    package { 'puppet-release':
      name     => $package_name,
      provider => $package_provider,
      source   => $package_source,
      require  => Exec['puppet-release'],
    }

    $decommission_packages.each |String $puppet_release| {
      package { $puppet_release:
        ensure => absent,
        before => Package['puppet-release'],
      }
    }
  }
}