class ldap {
        File {  owner => "root",
                group => "root",
                mode => "0644"
        }

        case $operatingsystem {
                centos: { $ldap_packages = ["nss_ldap", "openldap-clients"] }
                debian: { $ldap_packages = ["ldap-utils", "libldap2", "libnss-ldap", "libpam-ldap"] }
        }

        package { $ldap_packages:
                ensure => installed }

        case $operatingsystem {
          centos: {
            file { "/etc/ldap.conf":
              source  => "puppet:///ldap/libnss-ldap.conf"
            }
            file { "/etc/openldap/ldap.conf":
              source  => "puppet:///ldap/ldap.conf"
            }
            file { "/etc/nsswitch.conf":
                source  => "puppet:///ldap/nsswitch.conf"
            }
          }
          debian: {
            file { [ "/etc/libnss-ldap.conf", "/etc/pam_ldap.conf" ]:
              source  => "puppet:///ldap/libnss-ldap.conf"
            }
            file { "/etc/ldap.conf":
              source  => "puppet:///ldap/ldap.conf"
            }
            file { "/etc/nsswitch.conf":
                source  => "puppet:///ldap/nsswitch.conf"
            }
            file { "/etc/pam.d/common-account":
                source  => "puppet:///ldap/common-account"
            }
            file { "/etc/pam.d/common-auth":
                source  => "puppet:///ldap/common-auth"
            }
          }
          default: {
            file { [ "/etc/libnss-ldap.conf", "/etc/pam_ldap.conf" ]:
              source  => "puppet:///ldap/libnss-ldap.conf"
            }
            file { "/etc/ldap.conf":
              source  => "puppet:///ldap/ldap.conf"
            }
            file { "/etc/nsswitch.conf":
                source  => "puppet:///ldap/nsswitch.conf"
            }
          }
        }

}