Browse Source

Add server::install class

DarkMorford 6 năm trước cách đây
mục cha
commit
7a62794c33
5 tập tin đã thay đổi với 63 bổ sung23 xóa
  1. 1 1
      hiera.yaml
  2. 12 21
      manifests/server.pp
  3. 38 0
      manifests/server/install.pp
  4. 1 1
      manifests/utils.pp
  5. 11 0
      spec/classes/server/install_spec.rb

+ 1 - 1
hiera.yaml

@@ -5,7 +5,7 @@ defaults:  # Used for any hierarchy level that omits these keys.
   datadir: data         # This path is relative to hiera.yaml's directory.
   data_hash: yaml_data  # Use the built-in YAML backend.
 
-hierarchy:
+default_hierarchy:
   - name: "OS Family"
     path: "os/%{facts.os.family}.yaml"
 

+ 12 - 21
manifests/server.pp

@@ -8,29 +8,20 @@ class openldap::server (
   String                $owner,
   String                $group,
   String                $server_package,
-  Enum['olc', 'augeas'] $provider
+  Enum['olc', 'augeas'] $provider,
 )
 {
-  if $::osfamily == 'Debian' {
-    $answerfile = '/var/cache/debconf/slapd.preseed'
-    file { $answerfile:
-      ensure => file,
-      mode   => '0644',
-      owner  => 'root',
-      group  => 'root',
-      source => 'puppet:///modules/darkmorford-openldap/slapd.preseed',
-      before => Package[$server_package]
-    }
-  } else {
-    $answerfile = undef
-  }
-
-  if $provider == 'olc' {
-    contain ::openldap::utils
-  }
+  class { 'openldap::server::install': }
 
-  package { $server_package:
-    ensure       => installed,
-    responsefile => $answerfile
+  case $provider {
+    'augeas': {
+      Class['openldap::server::install']
+      -> Class['openldap::server']
+    }
+    'olc': {
+    }
+    default: {
+      fail 'Invalid config provider'
+    }
   }
 }

+ 38 - 0
manifests/server/install.pp

@@ -0,0 +1,38 @@
+# A description of what this class does
+#
+# @summary A short summary of the purpose of this class
+#
+# @example
+#   include openldap::server::install
+class openldap::server::install {
+  # Ensure the main server class has been defined
+  if !defined(Class['openldap::server']) {
+    fail 'Class openldap::server not defined'
+  }
+
+  # Include utility programs if using olc
+  if $openldap::server::provider == 'olc' {
+    contain openldap::utils
+  }
+
+  # Declare answer file if on a Debian-like system
+  if $::osfamily == 'Debian' {
+    $answerfile = '/var/cache/debconf/slapd.preseed'
+    file { $answerfile:
+      ensure => file,
+      mode   => '0644',
+      owner  => 'root',
+      group  => 'root',
+      source => 'puppet:///modules/darkmorford-openldap/slapd.preseed',
+      before => Package[$openldap::server::server_package],
+    }
+  } else {
+    $answerfile = undef
+  }
+
+  # Install the server package
+  package { $openldap::server::server_package:
+    ensure       => installed,
+    responsefile => $answerfile,
+  }
+}

+ 1 - 1
manifests/utils.pp

@@ -5,7 +5,7 @@
 # @example
 #   include openldap::utils
 class openldap::utils (
-  Optional[String] $utils_package = undef,
+  Optional[String] $utils_package,
 ) {
   if $utils_package {
     package { $utils_package:

+ 11 - 0
spec/classes/server/install_spec.rb

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