Puppet Class: percona::config::server

Defined in:
manifests/config/server.pp

Overview

Class: percona::config::server

Todo:

TODO: Document class.



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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'manifests/config/server.pp', line 7

class percona::config::server {
  $config_content    = $::percona::config_content
  $config_dir        = $::percona::config_dir
  $config_dir_mode   = $::percona::config_dir_mode
  $config_file       = $::percona::config_file
  $config_file_mode  = $::percona::config_file_mode
  $config_group      = $::percona::config_group
  $config_includedir = $::percona::config_includedir
  $config_user       = $::percona::config_user

  $config_replace   = $::percona::config_replace
  $config_skip      = $::percona::config_skip

  $daemon_user      = $::percona::daemon_user
  $logdir           = $::percona::logdir
  $logdir_group     = $::percona::logdir_group
  $server           = $::percona::server
  $service_name     = $::percona::service_name
  $service_restart  = $::percona::service_restart
  $template         = $::percona::template
  $version          = $::percona::percona_version

  $configuration         = $::percona::configuration
  $default_configuration = $::percona::params::default_configuration

  File {
    owner   => $config_user,
    group   => $config_group,
    require => [
      Class['percona::install'],
    ],
  }
  if $service_restart {
    File {
      notify => Service[$service_name],
    }
  }

  # Workaround for assigning an empty hash. Puppet doesn't know how to
  # handle {} very well in certain places.
  $empty_hash = {}


  # Get the hash that is global (all versions).
  if $default_configuration['global'] {
    $default_global = $default_configuration['global']
  } else {
    $default_global = {}
  }

  # Get the hash for the version we are installing.
  if $default_configuration[$version] {
    $default_version = $default_configuration[$version]
  } else {
    $default_version = {}
  }


  # Configuration set on the percona class level.
  $my_configuration = $configuration ? {
    undef   => $empty_hash,
    default => $configuration,
  }

  # A part of the configuration is created from various parameters that have
  # been defined on percona::params or percona.
  $params           = $::percona::params

  # Globals
  if $params['global'] {
    $params_global = $params['global']
  } else {
    $params_global = {}
  }
  # Version specifics.
  if $params[$version] {
    $params_version = $params[$version]
  } else {
    $params_version = {}
  }

  # Special case. Only add this parameter if it has been set. We need to do
  # this like this because we can not adjust the params hash after it has been
  # defined.
  if $::percona::tmpdir {
    $tempdir = { 'tmpdir' => $::percona::tmpdir, }
  } else {
    $tempdir = {}
  }

  # these are all the hashes we are going to merge. The my_configuration is the
  # most specific (its stuff WE have set) and others will be used as 'defaults'
  $hashes = [
    $default_version,
    $default_global,
    $params_version,
    $params_global,
    $tempdir,
  ]

  # One big hash to rule them all (and use in templates or augeas or ...)
  $options = percona_hash_merge($my_configuration, $hashes)

  # Use provided content or default/overriden template.
  if $config_content {
    $file_content = $config_content
  }
  else {
    $file_content = template($template)
  }

  ## Required directories.
  # Only certain distros use a config_dir.
  if $config_dir {
    file { $config_dir:
      ensure => 'directory';
    }
  }


  # We have a config_include_dir configured and it doesnt exist yet:
  # try to create it.
  if $config_includedir and ! (defined(File[$config_includedir])) {
    file {$config_includedir:
      ensure => 'directory',
      mode   => $config_dir_mode,
    }
  }

  file { $logdir :
    ensure => 'directory',
    mode   => $config_dir_mode,
    owner  => $daemon_user,
    group  => $logdir_group,
  }

  if $config_skip != true {
    file { $config_file:
      ensure  => 'present',
      mode    => $config_file_mode,
      content => $file_content,
      replace => $config_replace,
    }
  }

}