Enable lingering for the contributors user
[mirror/dsa-puppet.git] / modules / roles / manifests / sso.pp
index 4075993..dc2837f 100644 (file)
@@ -1,5 +1,72 @@
-class roles::sso {
-       ssl::service { 'sso.debian.org':
-               notify  => Exec['service apache2 reload'],
-       }
+# Debian SSO class.
+#
+# This sets up the web service as well as the LDAP backend for ftmg
+#
+# @param db_address     hostname of the postgres server for this service
+# @param db_port        port of the postgres server for this service
+class roles::sso (
+  String  $db_address,
+  Integer $db_port,
+) {
+  include apache2
+  include roles::sso_rp
+
+  ssl::service { 'sso.debian.org':
+    notify => Exec['service apache2 reload'],
+    key    => true,
+  }
+  ssl::service { 'ftmg.sso.debian.org':
+    notify => Exec['service apache2 reload'],
+    key    => true,
+  }
+
+  $ftmg_dsa_root_password = hkdf('/etc/puppet/secret', "roles::sso::slapd-ftmg::${::fqdn}")
+
+  ensure_packages ( [
+    'slapd',
+    ], {
+    ensure => 'installed',
+  })
+  service { 'slapd':
+    ensure  => running,
+  }
+  file { '/etc/ldap/slapd.d':
+    ensure => absent,
+    force  => true,
+    notify => Service['slapd'],
+  }
+  file { '/etc/ldap/slapd.conf':
+    source => 'puppet:///modules/roles/sso/slapd.conf',
+    notify => Service['slapd'],
+  }
+  file { '/etc/ldap/slapd-ftmg.conf':
+    content => template('roles/sso/slapd-ftmg.conf.erb'),
+    notify  => Service['slapd'],
+    group   => 'openldap',
+    mode    => '0440',
+  }
+  file { '/etc/default/slapd':
+    source => 'puppet:///modules/roles/sso/default-slapd',
+    notify => Service['slapd'],
+  }
+  file { '/var/lib/ldap-ftmg':
+    ensure => directory,
+    mode   => '0700',
+    owner  => 'openldap',
+    group  => 'openldap',
+    notify => Service['slapd'],
+  }
+
+  file { '/etc/ldap/schema/openssh-ldap.schema':
+    source => 'puppet:///modules/roles/sso/openssh-ldap.schema',
+    notify => Service['slapd'],
+  }
+
+  @@postgres::cluster::hba_entry { "debsso-${::fqdn}":
+    tag      => "postgres::cluster::${db_port}::hba::${db_address}",
+    pg_port  => $db_port,
+    database => 'debsso',
+    user     => ['debsso', 'debssoweb'],
+    address  => $base::public_addresses,
+  }
 }