Puppet Class: mongodb::server::config

Defined in:
manifests/server/config.pp

Summary

Manages mongod config

Overview



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
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'manifests/server/config.pp', line 5

class mongodb::server::config {
  $ensure           = $mongodb::server::ensure
  $user             = $mongodb::server::user
  $group            = $mongodb::server::group
  $config           = $mongodb::server::config
  $config_content   = $mongodb::server::config_content
  $config_template  = $mongodb::server::config_template
  $config_data      = $mongodb::server::config_data
  $dbpath           = $mongodb::server::dbpath
  $dbpath_fix       = $mongodb::server::dbpath_fix
  $pidfilepath      = $mongodb::server::pidfilepath
  $pidfilemode      = $mongodb::server::pidfilemode
  $manage_pidfile   = $mongodb::server::manage_pidfile
  $logpath          = $mongodb::server::logpath
  $logappend        = $mongodb::server::logappend
  $system_logrotate = $mongodb::server::system_logrotate
  $fork             = $mongodb::server::fork
  $port             = $mongodb::server::port
  $journal          = $mongodb::server::journal
  $smallfiles       = $mongodb::server::smallfiles
  $cpu              = $mongodb::server::cpu
  $auth             = $mongodb::server::auth
  $create_admin     = $mongodb::server::create_admin
  $admin_username   = $mongodb::server::admin_username
  $admin_password   = $mongodb::server::admin_password
  $handle_creds     = $mongodb::server::handle_creds
  $store_creds      = $mongodb::server::store_creds
  $rcfile           = $mongodb::server::rcfile
  $verbose          = $mongodb::server::verbose
  $verbositylevel   = $mongodb::server::verbositylevel
  $objcheck         = $mongodb::server::objcheck
  $quota            = $mongodb::server::quota
  $quotafiles       = $mongodb::server::quotafiles
  $diaglog          = $mongodb::server::diaglog
  $oplog_size       = $mongodb::server::oplog_size
  $nohints          = $mongodb::server::nohints
  $nohttpinterface  = $mongodb::server::nohttpinterface
  $noscripting      = $mongodb::server::noscripting
  $notablescan      = $mongodb::server::notablescan
  $noprealloc       = $mongodb::server::noprealloc
  $nssize           = $mongodb::server::nssize
  $mms_token        = $mongodb::server::mms_token
  $mms_name         = $mongodb::server::mms_name
  $mms_interval     = $mongodb::server::mms_interval
  $configsvr        = $mongodb::server::configsvr
  $shardsvr         = $mongodb::server::shardsvr
  $replset          = $mongodb::server::replset
  $rest             = $mongodb::server::rest
  $quiet            = $mongodb::server::quiet
  $slowms           = $mongodb::server::slowms
  $keyfile          = $mongodb::server::keyfile
  $key              = $mongodb::server::key
  $ipv6             = $mongodb::server::ipv6
  $bind_ip          = $mongodb::server::bind_ip
  $directoryperdb   = $mongodb::server::directoryperdb
  $profile          = $mongodb::server::profile
  $maxconns         = $mongodb::server::maxconns
  $set_parameter    = $mongodb::server::set_parameter
  $syslog           = $mongodb::server::syslog
  $tls              = $mongodb::server::tls
  $tls_key          = $mongodb::server::tls_key
  $tls_ca           = $mongodb::server::tls_ca
  $tls_conn_without_cert = $mongodb::server::tls_conn_without_cert
  $tls_invalid_hostnames = $mongodb::server::tls_invalid_hostnames
  $tls_invalid_certificates = $mongodb::server::tls_invalid_certificates
  $tls_mode         = $mongodb::server::tls_mode
  $storage_engine   = $mongodb::server::storage_engine

  File {
    owner => $user,
    group => $group,
  }

  if ($ensure == 'present' or $ensure == true) {
    if $keyfile and $key {
      file { $keyfile:
        content => $key,
        owner   => $user,
        group   => $group,
        mode    => '0400',
      }
    }

    if empty($storage_engine) {
      $storage_engine_internal = undef
    } else {
      $storage_engine_internal = $storage_engine
    }

    # Pick which config content to use
    if $config_content {
      $cfg_content = $config_content
    } elsif $config_template {
      # Template has available user-supplied data
      # - $config_data
      $cfg_content = template($config_template)
    } else {
      # Template has available user-supplied data
      # - $config_data
      $cfg_content = template('mongodb/mongodb.conf.erb')
    }

    file { $config:
      content => $cfg_content,
      owner   => 'root',
      group   => 'root',
      mode    => '0644',
    }

    file { $dbpath:
      ensure   => directory,
      mode     => '0750',
      owner    => $user,
      group    => $group,
      selrange => 's0',
      selrole  => 'object_r',
      seltype  => 'mongod_var_lib_t',
      seluser  => 'system_u',
      require  => File[$config],
    }

    if $dbpath_fix {
      exec { 'fix dbpath permissions':
        command   => "chown -R ${user}:${group} ${dbpath}",
        path      => ['/usr/bin', '/bin'],
        onlyif    => "find ${dbpath} -not -user ${user} -o -not -group ${group} -print -quit | grep -q '.*'",
        subscribe => File[$dbpath],
      }
    }

    if $pidfilepath {
      if $manage_pidfile {
        file { $pidfilepath:
          ensure => file,
          mode   => $pidfilemode,
          owner  => $user,
          group  => $group,
        }
      }
    }
  } else {
    file { $dbpath:
      ensure => absent,
      force  => true,
      backup => false,
    }
    file { $config:
      ensure => absent,
    }
  }

  $admin_password_unsensitive = if $admin_password =~ Sensitive[String] {
    $admin_password.unwrap
  } else {
    $admin_password
  }
  if $handle_creds {
    file { $rcfile:
      ensure  => file,
      content => template('mongodb/mongoshrc.js.erb'),
      owner   => 'root',
      group   => 'root',
      mode    => '0600',
    }
  }
}