# The ldap-group-maint service. # # The ldap-group-maint service looks to see if the groups branch # (cn=groups,dc=stanford,dc=edu) has changed or if one of the entries in # the people branch (cn=people,dc=stanford,dc=edu) has an suPrivilegeGroup # attribute added or removed. In either case, the service will synchronize # that group's information between these two trees. # # See also https://ikiwiki.stanford.edu/service/ldap/sync-scripts/ # # $generate_gid = 1 means ???. Used in the template files. # # $ensure: set to 'present' to run this service on this server, 'absent' # to make sure that it does _not_ run. class su_ldap::sync_scripts::ldap_group_maint ( $ensure = undef, $env = undef, $ldap_master_fqdn = undef, $generate_gid = 1, ){ # Do we want the service to be running or stopped? if ($ensure == 'present') { $service_status = 'running' } elsif ($ensure == 'absent') { $service_status = 'stopped' } else { fail("ensure must be one 'present' or 'absent'") } #include s_ldap::base::ldap_admin # $lsdb_host is used in the template files below. case $env { prod: { $lsdb_host = 'lsdb.stanford.edu' } 'pre', 'sbx', 'wlu', 'dev', 'test', 'uat': { $lsdb_host = 'lsdb-test.stanford.edu' } default: { fail("unrecognized environment ${env}") } } ## Configuration files: one for the cron and one for the listener. file { '/etc/ldapadmin/ldap-group-maint.conf': ensure => present, content => template('su_ldap/etc/ldapadmin/ldap-group-maint.conf.erb'), require => File['/etc/ldapadmin']; '/etc/ldapadmin/ldap-group-maint-daemon.conf': ensure => present, content => template('su_ldap/etc/ldapadmin/ldap-group-maint-daemon.conf.erb'), require => File['/etc/ldapadmin']; } ## Cron job file { '/etc/cron.d/ldap-group-maint': ensure => $ensure, mode => '0644', source => 'puppet:///modules/su_ldap/etc/cron.d/ldap-group-maint', require => File['/etc/ldapadmin/ldap-group-maint.conf'], } # We want to reload the systemd daemon on any change to the unit # file. We use the base::systemd shared library's systemd-daemon-reload # to do this. file { '/lib/systemd/system/ldap-group-maint.service': ensure => present, content => template('su_ldap/lib/systemd/system/ldap-group-maint.service'), mode => '0644', notify => Exec['systemd-daemon-reload'], } service { 'ldap-group-maint': ensure => $service_status, require => [ File['/lib/systemd/system/ldap-group-maint.service'], File['/etc/ldapadmin/ldap-group-maint-daemon.conf'], ], } }