瀏覽代碼

Add server::config class

- Tests do not currently compile
DarkMorford 6 年之前
父節點
當前提交
7cbb230a81
共有 4 個文件被更改,包括 64 次插入1 次删除
  1. 4 0
      data/common.yaml
  2. 5 1
      manifests/server.pp
  3. 43 0
      manifests/server/config.pp
  4. 12 0
      spec/classes/server/config_spec.rb

+ 4 - 0
data/common.yaml

@@ -1,2 +1,6 @@
 ---
+openldap::server::ldap_ifs:  ['/']
+openldap::server::ldaps_ifs: []
+openldap::server::ldapi_ifs: ['/']
+
 openldap::server::provider: 'olc'

+ 5 - 1
manifests/server.pp

@@ -9,9 +9,13 @@ class openldap::server (
   String                $group,
   String                $server_package,
   Enum['olc', 'augeas'] $provider,
+  Array[String]         $ldap_ifs,
+  Array[String]         $ldaps_ifs,
+  Array[String]         $ldapi_ifs,
 )
 {
   class { 'openldap::server::install': }
+  -> class { 'openldap::server::config': }
 
   case $provider {
     'augeas': {
@@ -21,7 +25,7 @@ class openldap::server (
     'olc': {
     }
     default: {
-      fail 'Invalid config provider'
+      fail "Invalid config provider ${provider}"
     }
   }
 }

+ 43 - 0
manifests/server/config.pp

@@ -0,0 +1,43 @@
+# A description of what this class does
+#
+# @summary A short summary of the purpose of this class
+#
+# @example
+#   include openldap::server::config
+class openldap::server::config {
+  # Ensure the main server class has been defined
+  if !defined(Class['openldap::server']) {
+    fail 'Class openldap::server not defined'
+  }
+
+  # Generate interface lists for the three types of connections
+  $slapd_ldap_ifs = empty($openldap::server::ldap_ifs) ? {
+    true  => '',
+    false => join(prefix($openldap::server::ldap_ifs, 'ldap://'), ' '),
+  }
+  $slapd_ldapi_ifs = empty($openldap::server::ldapi_ifs) ? {
+    true  => '',
+    false => join(prefix($openldap::server::ldapi_ifs, 'ldapi://'), ' '),
+  }
+  $slapd_ldaps_ifs = empty($openldap::server::ldaps_ifs) ? {
+    true  => '',
+    false => join(prefix($openldap::server::ldaps_ifs, 'ldaps://'), ' '),
+  }
+
+  # Concat into a single interface string
+  $slapd_ldap_urls = "${slapd_ldap_ifs} ${slapd_ldapi_ifs} ${slapd_ldaps_ifs}"
+
+  case $::osfamily {
+    'Debian': {
+      shellvar { 'slapd':
+        ensure   => present,
+        target   => '/etc/default/slapd',
+        variable => 'SLAPD_SERVICES',
+        value    => $slapd_ldap_urls,
+      }
+    }
+    default: {
+      fail "Operating-system family ${::osfamily} not yet supported"
+    }
+  }
+}

+ 12 - 0
spec/classes/server/config_spec.rb

@@ -0,0 +1,12 @@
+require 'spec_helper'
+
+describe 'openldap::server::config' do
+  on_supported_os.each do |os, os_facts|
+    context "on #{os}" do
+      let(:facts) { os_facts }
+      let(:pre_condition) { "class {'openldap::server':}" }
+
+      it { is_expected.to compile.with_all_deps }
+    end
+  end
+end