Puppet Class: r10k::webhook

Inherits:
r10k::params
Defined in:
manifests/webhook.pp

Overview

This class creates a github webhoook to allow curl style post-rec scripts

Parameters:

  • ensure (Any) (defaults to: true)
  • user (Any) (defaults to: $r10k::params::webhook_user)
  • group (Any) (defaults to: $r10k::params::webhook_group)
  • background (Any) (defaults to: $r10k::params::webhook_background)
  • bin_template (Any) (defaults to: $r10k::params::webhook_bin_template)
  • service_template (Any) (defaults to: $r10k::params::webhook_service_template)
  • service_file (Any) (defaults to: $r10k::params::webhook_service_file)
  • service_file_mode (Any) (defaults to: $r10k::params::webhook_service_file_mode)
  • use_mcollective (Any) (defaults to: $r10k::params::webhook_use_mcollective)
  • is_pe_server (Any) (defaults to: $r10k::params::is_pe_server)
  • root_user (Any) (defaults to: $r10k::params::root_user)
  • root_group (Any) (defaults to: $r10k::params::root_group)
  • manage_packages (Any) (defaults to: true)
  • ruby_bin (Any) (defaults to: undef)


2
3
4
5
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'manifests/webhook.pp', line 2

class r10k::webhook (
  $ensure            = true,
  $user              = $r10k::params::webhook_user,
  $group             = $r10k::params::webhook_group,
  $background        = $r10k::params::webhook_background,
  $bin_template      = $r10k::params::webhook_bin_template,
  $service_template  = $r10k::params::webhook_service_template,
  $service_file      = $r10k::params::webhook_service_file,
  $service_file_mode = $r10k::params::webhook_service_file_mode,
  $use_mcollective   = $r10k::params::webhook_use_mcollective,
  $is_pe_server      = $r10k::params::is_pe_server,
  $root_user         = $r10k::params::root_user,
  $root_group        = $r10k::params::root_group,
  $manage_packages   = true,
  $ruby_bin          = undef,
) inherits r10k::params {
  File {
    ensure => $ensure,
    owner  => $root_user,
    group  => $root_group,
    mode   => '0644',
  }

  # Rewrite the params to style guide in lieu of
  # using the boolean directly...for clarity?
  $ensure_directory = $ensure ? {
    true  => 'directory',
    false => 'absent',
  }

  $ensure_file = $ensure ? {
    true  => 'file',
    false => 'absent',
  }

  $ensure_service = $ensure ? {
    true  => 'running',
    false => 'stopped',
  }

  $server_type = $background ? {
    true  => 'WEBrick::Daemon',
    false => 'WEBrick::SimpleServer',
  }

  file { '/var/log/webhook/access.log':
    ensure => $ensure_file,
    owner  => $user,
    group  => $group,
    before => Service['webhook'],
  }

  file { '/var/log/webhook':
    ensure => $ensure_directory,
    owner  => $user,
    group  => $group,
    force  => $ensure,
    before => Service['webhook'],
  }

  file { '/var/run/webhook':
    ensure => $ensure_directory,
    owner  => $user,
    group  => $group,
    before => Service['webhook'],
  }

  file { 'webhook_init_script':
    ensure  => $ensure_file,
    content => template("r10k/${service_template}"),
    path    => $service_file,
    mode    => $service_file_mode,
    notify  => Service['webhook'],
  }

  file { 'webhook_bin':
    ensure  => $ensure_file,
    content => template($bin_template),
    path    => '/usr/local/bin/webhook',
    mode    => '0755',
    notify  => Service['webhook'],
  }

  service { 'webhook':
    ensure => $ensure_service,
    enable => $ensure,
  }

  # We don't remove the packages/ gem as
  # They might be shared dependencies
  if $manage_packages {
    include r10k::webhook::package
  }

  # Only managed this file if you are using mcollective mode
  # We don't remove it as its part of PE and this is legacy
  if $use_mcollective {
    if $is_pe_server and versioncmp("${::puppetversion}", '3.7.0') >= 0 { #lint:ignore:only_variable_string
      # 3.7 does not place the certificate in peadmin's ~
      # This places it there as if it was an upgrade
      file { 'peadmin-cert.pem':
        ensure  => 'file',
        path    => '/var/lib/peadmin/.mcollective.d/peadmin-cert.pem',
        owner   => 'peadmin',
        group   => 'peadmin',
        mode    => '0644',
        content => file("${r10k::params::puppetconf_path}/ssl/certs/pe-internal-peadmin-mcollective-client.pem",'/dev/null'),
        notify  => Service['webhook'],
      }
    }
  }
}