Puppet Class: openldap::server::config

Defined in:
manifests/server/config.pp

Overview

See README.md for details.



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
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# File 'manifests/server/config.pp', line 2

class openldap::server::config {
  include openldap::server

  $slapd_params        = $openldap::server::slapd_params
  $owner               = $openldap::server::owner
  $group               = $openldap::server::group
  $enable_chown        = $openldap::server::enable_chown
  $ldap_port           = $openldap::server::ldap_port
  $ldap_address        = $openldap::server::ldap_address
  $ldaps_port          = $openldap::server::ldaps_port
  $ldaps_address       = $openldap::server::ldaps_address
  $ldapi_socket_path   = $openldap::server::ldapi_socket_path
  $register_slp        = $openldap::server::register_slp
  $krb5_keytab_file    = $openldap::server::krb5_keytab_file
  $ldap_config_backend = $openldap::server::ldap_config_backend
  $enable_memory_limit = $openldap::server::enable_memory_limit

  $slapd_ldap_ifs = empty($openldap::server::ldap_ifs) ? {
    false => join(prefix($openldap::server::ldap_ifs, 'ldap://'), ' '),
    true  => '',
  }
  $escaped_ldapi_ifs = $openldap::server::escape_ldapi_ifs ? {
    true  => regsubst($openldap::server::ldapi_ifs, '/', '%2F', 'G'),
    false => $openldap::server::ldapi_ifs,
  }
  $slapd_ldapi_ifs = empty($openldap::server::ldapi_ifs) ? {
    false => join(prefix($escaped_ldapi_ifs, 'ldapi://'), ' '),
    true  => '',
  }
  $slapd_ldaps_ifs = empty($openldap::server::ldaps_ifs) ? {
    false  => join(prefix($openldap::server::ldaps_ifs, 'ldaps://'), ' '),
    true => '',
  }
  $slapd_ldap_urls = "${slapd_ldap_ifs} ${slapd_ldapi_ifs} ${slapd_ldaps_ifs}"

  case $facts['os']['family'] {
    'Debian': {
      shellvar { 'slapd':
        ensure   => present,
        target   => '/etc/default/slapd',
        variable => 'SLAPD_SERVICES',
        value    => $slapd_ldap_urls,
      }
    }
    'RedHat': {
      if versioncmp($facts['os']['release']['major'], '6') <= 0 {
        $ldap = empty($openldap::server::ldap_ifs) ? {
          false => 'yes',
          true  => 'no',
        }
        shellvar { 'SLAPD_LDAP':
          ensure   => present,
          target   => '/etc/sysconfig/ldap',
          variable => 'SLAPD_LDAP',
          value    => $ldap,
        }
        $ldaps = empty($openldap::server::ldaps_ifs) ? {
          false => 'yes',
          true  => 'no',
        }
        shellvar { 'SLAPD_LDAPS':
          ensure   => present,
          target   => '/etc/sysconfig/ldap',
          variable => 'SLAPD_LDAPS',
          value    => $ldaps,
        }
        $ldapi = empty($openldap::server::ldapi_ifs) ? {
          false => 'yes',
          true  => 'no',
        }
        shellvar { 'SLAPD_LDAPI':
          ensure   => present,
          target   => '/etc/sysconfig/ldap',
          variable => 'SLAPD_LDAPI',
          value    => $ldapi,
        }
      } else {
        shellvar { 'slapd':
          ensure   => present,
          target   => '/etc/sysconfig/slapd',
          variable => 'SLAPD_URLS',
          value    => $slapd_ldap_urls,
        }
      }
    }
    'Archlinux': {}
    'FreeBSD': {
      shellvar { 'slapd_cn_config':
        ensure   => present,
        target   => '/etc/rc.conf',
        variable => 'slapd_cn_config',
        value    => 'YES',
        quoted   => 'double',
      }

      shellvar { 'slapd_flags':
        ensure   => present,
        target   => '/etc/rc.conf',
        variable => 'slapd_flags',
        value    => "-h '${slapd_ldap_urls}'",
        quoted   => 'double',
      }

      $slapd_sockets_ensure = bool2str(empty($openldap::server::ldapi_ifs), 'absent', 'present')
      shellvar { 'slapd_sockets':
        ensure   => $slapd_sockets_ensure,
        target   => '/etc/rc.conf',
        variable => 'slapd_sockets',
        value    => join($openldap::server::ldapi_ifs, ' '),
        quoted   => 'double',
      }

      # On FreeBSD we need to bootstrap slapd.d
      $ldif = file('openldap/cn-config.ldif')
      exec { 'bootstrap cn=config':
        path    => '/usr/local/sbin',
        command => "echo '${ldif}' | slapadd -n 0 -F ${openldap::server::confdir}",
        creates => "${openldap::server::confdir}/cn=config.ldif",
      }
    }
    'Suse': {
      $start_ldap = empty($openldap::server::ldap_ifs) ? {
        false  => 'yes',
        true   => 'no',
      }
      $start_ldapi = empty($openldap::server::ldapi_ifs) ? {
        false  => 'yes',
        true   => 'no',
      }
      $start_ldaps = empty($openldap::server::ldaps_ifs) ? {
        false  => 'yes',
        true   => 'no',
      }
      if $slapd_params != undef {
        $real_slapd_params = $slapd_params
      } else {
        $real_slapd_params = ''
      }
      $real_enable_chown = bool2str($enable_chown, 'yes', 'no')
      if ($ldap_address != undef and $ldap_port != undef) {
        $ldap_interface = "${ldap_address}:${ldap_port}"
      } else {
        $ldap_interface = ''
      }
      if ($ldaps_address != undef and $ldaps_port != undef) {
        $ldaps_interface = "${ldaps_address}:${ldaps_port}"
      } else {
        $ldaps_interface = ''
      }
      if $ldapi_socket_path != undef {
        $ldapi_interface = $ldapi_socket_path
      } else {
        $ldapi_interface = ''
      }
      $real_slp = bool2str($register_slp, 'yes', 'no')
      if $krb5_keytab_file != undef {
        $real_krb5_keytab_file = $krb5_keytab_file
      } else {
        $real_krb5_keytab_file = ''
      }
      $real_enable_memory_limit = bool2str($enable_memory_limit, 'yes', 'no')

      shellvar { 'OPENLDAP_START_LDAP':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_START_LDAP',
        value    => $start_ldap,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_START_LDAPS':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_START_LDAPS',
        value    => $start_ldaps,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_START_LDAPI':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_START_LDAPI',
        value    => $start_ldapi,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_SLAPD_PARAMS':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_SLAPD_PARAMS',
        value    => $real_slapd_params,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_USER':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_USER',
        value    => $owner,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_GROUP':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_GROUP',
        value    => $group,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_CHOWN_DIRS':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_CHOWN_DIRS',
        value    => $real_enable_chown,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_LDAP_INTERFACES':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_LDAP_INTERFACES',
        value    => $ldap_interface,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_LDAPS_INTERFACES':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_LDAPS_INTERFACES',
        value    => $ldaps_interface,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_LDAPI_INTERFACES':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_LDAPI_INTERFACES',
        value    => $ldapi_interface,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_REGISTER_SLP':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_REGISTER_SLP',
        value    => $real_slp,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_KRB5_KEYTAB':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_KRB5_KEYTAB',
        value    => $real_krb5_keytab_file,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_CONFIG_BACKEND':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_CONFIG_BACKEND',
        value    => $ldap_config_backend,
        quoted   => 'double',
      }
      shellvar { 'OPENLDAP_MEMORY_LIMIT':
        ensure   => present,
        target   => '/etc/sysconfig/openldap',
        variable => 'OPENLDAP_MEMORY_LIMIT',
        value    => $real_enable_memory_limit,
        quoted   => 'double',
      }
    }
    default: {
      fail "Operating System Family ${facts['os']['family']} not yet supported"
    }
  }
}