diff --git a/.fixtures.yml b/.fixtures.yml new file mode 100644 index 0000000..8e7b8fb --- /dev/null +++ b/.fixtures.yml @@ -0,0 +1,7 @@ +fixtures: + symlinks: + "ldap": "#{source_dir}" + repositories: + stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git" + motd: "https://github.com/torian/puppet-motd.git" + concat: "https://github.com/puppetlabs/puppet-concat.git" diff --git a/Rakefile b/Rakefile index 4c80c5a..4c67ef6 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,4 @@ - -require 'rake' -require 'rspec/core/rake_task' +require 'puppetlabs_spec_helper/rake_tasks' RSpec::Core::RakeTask.new(:spec) do |t| t.pattern = 'spec/*/*_spec.rb' diff --git a/manifests/init.pp b/manifests/init.pp index 8793ea8..4570012 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -16,7 +16,10 @@ # - CentOS 5.x / 6.x # - OpenSuse: 11.x / 12.x # - OVS: 2.1.1 / 2.1.5 / 2.2.0 / 3.0.2 +# - AIX(1): 5.3 / 6.1 / 7.1 # +# 1) the perzl.org openldap package also requires openssl +# so we depend on this package. # # === Examples # @@ -38,13 +41,23 @@ # # class ldap($ensure = present) { - include stdlib include ldap::params - package { $ldap::params::package : - ensure => $ensure, - } + case $::osfamily { + 'AIX': { + package { $ldap::params::package : + ensure => $ensure, + provider => 'rpm', + source => $ldap::params::package_source, + require => Package['openssl'] + } + } + default: { + package { $ldap::params::package : + ensure => $ensure, + } + } + } } - diff --git a/manifests/params.pp b/manifests/params.pp index eb0c266..aad3afd 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -308,6 +308,85 @@ } + 'AIX' : { + $package = [ 'openldap' ] + $package_source = 'http://www.oss4aix.org/download/RPMS/openldap/openldap-2.4.23-0.3.aix5.1.ppc.rpm' + + $prefix = '/etc/openldap' + $owner = 'root' + $group = 'system' + $config = 'ldap.conf' + $cacertdir = '/etc/openldap/cacerts' + + $server_package = [ 'openldap-servers' ] + $server_package_source = 'http://www.oss4aix.org/download/RPMS/openldap/openldap-servers-2.4.23-0.3.aix5.1.ppc.rpm' + $server_config = 'slapd.conf' + $service = 'ldap' + $server_script = 'ldap' + $server_pattern = 'slapd' + $server_owner = 'root' + $server_group = 'ldap' + + $schema_prefix = "${prefix}/schema" + $db_prefix = '/var/lib/ldap' + + $module_prefix = '/usr/lib/openldap' + + $ssl_prefix = '/etc/openldap/cacerts' + $server_run = '/var/run/slapd' + $schema_base = [ 'core', 'cosine', 'nis', 'inetorgperson', ] + $modules_base = [ 'back_bdb' ] + $index_base = [ + 'index objectclass eq', + 'index entryCSN eq', + 'index entryUUID eq', + 'index uidNumber eq', + 'index gidNumber eq', + 'index cn pres,sub,eq', + 'index sn pres,sub,eq', + 'index uid pres,sub,eq', + 'index displayName pres,sub,eq', + ] + + # + # olcTLS* attributes are not defined here + # because they do have their own behavior + # according to the puppet module parameters + # + # olcTLSCACertificatePath = $ssl_ca + # olcTLSCertificateFile = $ssl_cert + # olcTLSCertificateKeyFile = $ssl_key + # + $cnconfig_default_attrs = [ + 'olcConfigFile', + 'olcConfigDir', + 'olcAllows', + 'olcAttributeOptions', + 'olcAuthzPolicty', + 'olcConcurrency', + 'olcConnMaxPending', + 'olcConnMaxPendingAuth', + 'olcGentleHUP', + 'olcIdleTimeout', + 'olcIndexSubstrIfMaxLen', + 'olcIndexSubstrIfMinLen', + 'olcIndexSubstrIfAnyLen', + 'olcIndexSubstrIfAnyStep', + 'olcIndexIntLen', + 'olcLocalSSF', + 'olcPidFile', + 'olcReadOnly', + 'olcReverseLookup', + 'olcSaslSecProps', + 'olcSockbufMaxIncoming', + 'olcSockbufMaxIncomingAuth', + 'olcTLSVerifyClient', + 'olcThreads', + 'olcToolThreads', + 'olcWriteTimeout', + ] + } + default: { fail("Operating system ${::operatingsystem} not supported") } @@ -315,4 +394,3 @@ } } - diff --git a/manifests/server/master.pp b/manifests/server/master.pp index 82c5565..03f90cf 100644 --- a/manifests/server/master.pp +++ b/manifests/server/master.pp @@ -146,20 +146,44 @@ motd::register { 'ldap::server::master': } } - package { $ldap::params::server_package: - ensure => $ensure - } + case $::osfamily { + 'AIX': { + package { $ldap::params::server_package: + ensure => $ensure, + source => $ldap::params::server_package_source, + provider => 'rpm', + require => Package['openssl'] + } + + service { $ldap::params::service: + ensure => running, + enable => true, + pattern => $ldap::params::server_pattern, + provider => 'init', + require => [ + Package[$ldap::params::server_package], + File["${ldap::params::prefix}/${ldap::params::server_config}"], + ] + } + } + default : { + package { $ldap::params::server_package: + ensure => $ensure + } - service { $ldap::params::service: - ensure => running, - enable => true, - pattern => $ldap::params::server_pattern, - require => [ - Package[$ldap::params::server_package], - File["${ldap::params::prefix}/${ldap::params::server_config}"], - ] + service { $ldap::params::service: + ensure => running, + enable => true, + pattern => $ldap::params::server_pattern, + require => [ + Package[$ldap::params::server_package], + File["${ldap::params::prefix}/${ldap::params::server_config}"], + ] + } + } } + if (!empty($cnconfig_attrs)) { $cnconfig_default_attrs = $ldap::params::cnconfig_default_attrs @@ -245,7 +269,7 @@ # Additional configurations (for rc scripts) case $::osfamily { - + 'Debian' : { class { 'ldap::server::debian': ssl => $ssl } } @@ -261,4 +285,3 @@ } } - diff --git a/manifests/server/slave.pp b/manifests/server/slave.pp index 3d49c19..4de5ed4 100644 --- a/manifests/server/slave.pp +++ b/manifests/server/slave.pp @@ -202,14 +202,30 @@ ensure => $ensure } - service { $ldap::params::service: - ensure => running, - enable => true, - pattern => $ldap::params::server_pattern, - require => [ - Package[$ldap::params::server_package], - File["${ldap::params::prefix}/${ldap::params::server_config}"], - ] + case $::osfamily { + 'AIX': { + service { $ldap::params::service: + ensure => running, + enable => true, + pattern => $ldap::params::server_pattern, + provider => 'init', + require => [ + Package[$ldap::params::server_package], + File["${ldap::params::prefix}/${ldap::params::server_config}"], + ] + } + } + default : { + service { $ldap::params::service: + ensure => running, + enable => true, + pattern => $ldap::params::server_pattern, + require => [ + Package[$ldap::params::server_package], + File["${ldap::params::prefix}/${ldap::params::server_config}"], + ] + } + } } @@ -298,7 +314,7 @@ # Additional configurations (for rc scripts) case $::osfamily { - + 'Debian' : { class { 'ldap::server::debian': ssl => $ssl } } diff --git a/spec/classes/ldap_client_spec.rb b/spec/classes/ldap_client_spec.rb index 126615e..f1ec6b8 100644 --- a/spec/classes/ldap_client_spec.rb +++ b/spec/classes/ldap_client_spec.rb @@ -1,66 +1,64 @@ - require 'spec_helper' oses = @oses describe 'ldap::client' do - oses.keys.each do |os| - - describe "Running on #{os}" do + oses.keys.each do |os| - let(:facts) { { - :osfamily => oses[os][:osfamily], - :operatingsystem => oses[os][:operatingsystem], - :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], - :architecture => oses[os][:architecture], - } } + describe "Running on #{os}" do - let(:params) { { - :uri => 'ldap://ldap.example.com', - :base => 'dc=suffix', - } } - - it { should include_class('ldap::params') } - it { should contain_file(oses[os][:utils_cfg]) } + let(:facts) { { + :osfamily => oses[os][:osfamily], + :operatingsystem => oses[os][:operatingsystem], + :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], + :architecture => oses[os][:architecture], + :concat_basedir => oses[os][:concat_basedir], + } } - context 'Motd disabled (default)' do - it { should_not contain_motd__register('ldap') } - end - context 'Motd enabled' do - let(:params) { { - :uri => 'ldap://ldap.example.com', - :base => 'dc=suffix', - :enable_motd => true - } } - it { should contain_motd__register('ldap') } - end + let(:params) { { + :uri => 'ldap://ldap.example.com', + :base => 'dc=suffix', + } } - context 'SSL Enabled with certificate filename' do - let(:params) { { - :uri => 'ldap://ldap.example.com', - :base => 'dc=suffix', - :ssl => true, - :ssl_cert => oses[os][:ssl_cert], - } } - it { should contain_file("#{oses[os][:cacertdir]}/#{oses[os][:ssl_cert]}") } - end + it { should contain_class('ldap::params') } + it { should contain_file(oses[os][:utils_cfg]) } - context 'SSL Enabled without certificate' do - let(:params) { { - :uri => 'ldap://ldap.example.com', - :base => 'dc=suffix', - :ssl => true, - } } - it { expect { - should contain_file("#{oses[os][:cacertdir]}/#{oses[os][:ssl_cert]}") - }.to raise_error(Puppet::Error, /^When ssl is.*/) - } + context 'Motd disabled (default)' do + it { should_not contain_motd__register('ldap') } + end - end + context 'Motd enabled' do + let(:params) { { + :uri => 'ldap://ldap.example.com', + :base => 'dc=suffix', + :enable_motd => true + } } + it { should contain_motd__register('ldap') } + end - end + context 'SSL Enabled with certificate filename' do + let(:params) { { + :uri => 'ldap://ldap.example.com', + :base => 'dc=suffix', + :ssl => true, + :ssl_cert => oses[os][:ssl_cert], + } } + it { should contain_file("#{oses[os][:cacertdir]}/#{oses[os][:ssl_cert]}") } + end - end + context 'SSL Enabled without certificate' do + let(:params) { { + :uri => 'ldap://ldap.example.com', + :base => 'dc=suffix', + :ssl => true, + } } + it { expect { + should contain_file("#{oses[os][:cacertdir]}/#{oses[os][:ssl_cert]}") + }.to raise_error(Puppet::Error, /^When ssl is.*/) + } + end + end + end end diff --git a/spec/classes/ldap_server_master_spec.rb b/spec/classes/ldap_server_master_spec.rb index e143209..63dbc1a 100644 --- a/spec/classes/ldap_server_master_spec.rb +++ b/spec/classes/ldap_server_master_spec.rb @@ -1,57 +1,57 @@ - require 'spec_helper' oses = @oses describe 'ldap::server::master' do - + oses.keys.each do |os| - - describe "Running on #{os}" do - - let(:facts) { { - :osfamily => oses[os][:osfamily], - :operatingsystem => oses[os][:operatingsystem], - :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], - :architecture => oses[os][:architecture], - } } - - let(:params) { { + + describe "Running on #{os}" do + + let(:facts) { { + :osfamily => oses[os][:osfamily], + :operatingsystem => oses[os][:operatingsystem], + :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], + :architecture => oses[os][:architecture], + :concat_basedir => oses[os][:concat_basedir], + } } + + let(:params) { { + :suffix => 'dc=example,dc=com', + :rootpw => 'asdqw', + } } + + it { should contain_class('ldap') } + it { should contain_service(oses[os][:service]) } + it { should contain_package(oses[os][:server_pkg]) } + it { should contain_file(oses[os][:server_cfg]) } + + context 'Motd disabled (default)' do + it { should_not contain_motd__register('ldap::server::master') } + end + + context 'Motd enabled' do + let(:params) { { + :suffix => 'dc=example,dc=com', + :rootpw => 'asdqw', + :enable_motd => true + } } + it { should contain_motd__register('ldap::server::master') } + end + end + end + + describe "Running on unsupported OS" do + let(:facts) { { :osfamily => 'solaris' } } + let(:params) { { :suffix => 'dc=example,dc=com', :rootpw => 'asdqw', } } - - it { should include_class('ldap') } - it { should contain_service(oses[os][:service]) } - it { should contain_package(oses[os][:server_pkg]) } - it { should contain_file(oses[os][:server_cfg]) } - - context 'Motd disabled (default)' do - it { should_not contain_motd__register('ldap::server::master') } - end - - context 'Motd enabled' do - let(:params) { { - :suffix => 'dc=example,dc=com', - :rootpw => 'asdqw', - :enable_motd => true - } } - it { should contain_motd__register('ldap::server::master') } - end - end - end - - describe "Running on unsupported OS" do - let(:facts) { { :osfamily => 'solaris' } } - let(:params) { { - :suffix => 'dc=example,dc=com', - :rootpw => 'asdqw', - } } - it { - expect { - should include_class('ldap') - }.to raise_error(Puppet::Error, /^Operating system.*/) - } - end + it { + expect { + should contain_class('ldap') + }.to raise_error(Puppet::Error, /^Operating system.*/) + } + end end diff --git a/spec/classes/ldap_server_slave_spec.rb b/spec/classes/ldap_server_slave_spec.rb index f7c9173..c2c0559 100644 --- a/spec/classes/ldap_server_slave_spec.rb +++ b/spec/classes/ldap_server_slave_spec.rb @@ -1,51 +1,70 @@ - + require 'spec_helper' oses = @oses describe 'ldap::server::slave' do - oses.keys.each do |os| - - describe "Running on #{os}" do + oses.keys.each do |os| - let(:facts) { { - :osfamily => oses[os][:osfamily], - :operatingsystem => oses[os][:operatingsystem], - :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], - :architecture => oses[os][:architecture], - } } - - let(:params) { { - :suffix => 'dc=example,dc=com', - :rootpw => 'rootpwsuperpass', - :sync_rid => 1, - :sync_provider => 'ldap://master.ldap', - :sync_updatedn => 'cn=admin,dc=example,dc=com', - :sync_binddn => 'cn=sync,dc=example,dc=com', - :sync_bindpw => 'password', - } } - - it { should include_class('ldap') } - it { should contain_package(oses[os][:server_pkg]) } - it { should contain_service(oses[os][:service]) } - it { should contain_file(oses[os][:server_cfg]) } + describe "Running on #{os}" do - context 'Motd disabled (default)' do - let(:params) { { - :suffix => 'dc=example,dc=com', - :rootpw => 'rootpwsuperpass', - :sync_rid => 1, - :sync_provider => 'ldap://master.ldap', - :sync_updatedn => 'cn=admin,dc=example,dc=com', - :sync_binddn => 'cn=sync,dc=example,dc=com', - :sync_bindpw => 'password', - } } - it { should_not contain_motd__register('ldap::server::master') } - end - - context 'Motd enabled' do - let(:params) { { + let(:facts) { { + :osfamily => oses[os][:osfamily], + :operatingsystem => oses[os][:operatingsystem], + :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], + :architecture => oses[os][:architecture], + :concat_basedir => oses[os][:concat_basedir], + } } + + let(:params) { { + :suffix => 'dc=example,dc=com', + :rootpw => 'rootpwsuperpass', + :sync_rid => 1, + :sync_provider => 'ldap://master.ldap', + :sync_updatedn => 'cn=admin,dc=example,dc=com', + :sync_binddn => 'cn=sync,dc=example,dc=com', + :sync_bindpw => 'password', + } } + + it { should contain_class('ldap') } + it { should contain_package(oses[os][:server_pkg]) } + it { should contain_service(oses[os][:service]) } + it { should contain_file(oses[os][:server_cfg]) } + + context 'Motd disabled (default)' do + let(:params) { { + :suffix => 'dc=example,dc=com', + :rootpw => 'rootpwsuperpass', + :sync_rid => 1, + :sync_provider => 'ldap://master.ldap', + :sync_updatedn => 'cn=admin,dc=example,dc=com', + :sync_binddn => 'cn=sync,dc=example,dc=com', + :sync_bindpw => 'password', + } } + it { should_not contain_motd__register('ldap::server::master') } + end + + context 'Motd enabled' do + let(:params) { { + :suffix => 'dc=example,dc=com', + :rootpw => 'rootpwsuperpass', + :sync_rid => 1, + :sync_provider => 'ldap://master.ldap', + :sync_updatedn => 'cn=admin,dc=example,dc=com', + :sync_binddn => 'cn=sync,dc=example,dc=com', + :sync_bindpw => 'password', + :enable_motd => true, + } } + + it { should contain_motd__register('ldap::server::slave') } + end + end + end + + describe "Running on unsupported OS" do + let(:facts) { { :osfamily => 'solaris' } } + let(:params) { { :suffix => 'dc=example,dc=com', :rootpw => 'rootpwsuperpass', :sync_rid => 1, @@ -53,31 +72,13 @@ :sync_updatedn => 'cn=admin,dc=example,dc=com', :sync_binddn => 'cn=sync,dc=example,dc=com', :sync_bindpw => 'password', - :enable_motd => true, } } - - it { should contain_motd__register('ldap::server::slave') } - end - end - end - - describe "Running on unsupported OS" do - let(:facts) { { :osfamily => 'solaris' } } - let(:params) { { - :suffix => 'dc=example,dc=com', - :rootpw => 'rootpwsuperpass', - :sync_rid => 1, - :sync_provider => 'ldap://master.ldap', - :sync_updatedn => 'cn=admin,dc=example,dc=com', - :sync_binddn => 'cn=sync,dc=example,dc=com', - :sync_bindpw => 'password', - } } - it { - expect { - should include_class('ldap') - }.to raise_error(Puppet::Error, /^Operating system.*/) - } - end + it { + expect { + should contain_class('ldap') + }.to raise_error(Puppet::Error, /^Operating system.*/) + } + end end diff --git a/spec/classes/ldap_spec.rb b/spec/classes/ldap_spec.rb index a259091..d15c6b0 100644 --- a/spec/classes/ldap_spec.rb +++ b/spec/classes/ldap_spec.rb @@ -1,63 +1,61 @@ - require 'spec_helper' oses = @oses describe 'ldap' do - oses.keys.each do |os| + oses.keys.each do |os| - describe "Running on #{os}" do + describe "Running on #{os}" do - let(:facts) { { - :osfamily => oses[os][:osfamily], - :operatingsystem => oses[os][:operatingsystem], - :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], - :architecture => oses[os][:architecture], - } } + let(:facts) do { + :osfamily => oses[os][:osfamily], + :operatingsystem => oses[os][:operatingsystem], + :operatingsystemmajrelease => oses[os][:operatingsystemmajrelease], + :architecture => oses[os][:architecture], + :concat_basedir => oses[os][:concat_basedir], + } + end - it { should include_class('ldap::params') } + it { should contain_class('ldap::params') } context 'Ensure is set to present' do - let(:params) { { - :ensure => 'present', - } } + let(:params) do { + :ensure => 'present', + } + end - it 'install required packages ' do + it 'install required packages ' do should contain_package(oses[os][:utils_pkg]).with({ - 'ensure' => 'present', - }) + 'ensure' => 'present', + }) end - end context 'Ensure is set to absent' do - let(:params) { { - :ensure => 'absent', - } } + let(:params) do { + :ensure => 'absent', + } + end - it 'do not install required packages ' do + it 'do not install required packages ' do should contain_package(oses[os][:utils_pkg]).with({ - 'ensure' => 'absent', - }) + 'ensure' => 'absent', + }) end - end context 'Ensure is not set' do - it 'install required packages ' do + it 'install required packages ' do should contain_package(oses[os][:utils_pkg]).with({ - 'ensure' => 'present', - }) + 'ensure' => 'present', + }) end - end - end - - end - + end + end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index acdd45f..1901111 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -17,6 +17,7 @@ :lsbdistid => 'Debian', :lsbdistrelease => '7.0', :architecture => 'amd64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'ldap-utils', :utils_cfg => '/etc/ldap/ldap.conf', @@ -40,6 +41,7 @@ :lsbdistid => 'Ubuntu', :lsbdistrelease => '13.04', :architecture => 'amd64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'ldap-utils', :utils_cfg => '/etc/ldap/ldap.conf', @@ -64,6 +66,7 @@ :lsbdistid => 'Redhat', :lsbdistrelease => '5.0', :architecture => 'x86_64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'openldap-clients', :utils_cfg => '/etc/openldap/ldap.conf', @@ -88,6 +91,7 @@ :lsbdistid => 'Redhat', :lsbdistrelease => '6.0', :architecture => 'x86_64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'openldap-clients', :utils_cfg => '/etc/openldap/ldap.conf', @@ -112,6 +116,7 @@ :lsbdistid => 'CentOS', :lsbdistrelease => '5.0', :architecture => 'x86_64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'openldap-clients', :utils_cfg => '/etc/openldap/ldap.conf', @@ -136,6 +141,7 @@ :lsbdistid => 'CentOS', :lsbdistrelease => '6.0', :architecture => 'x86_64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'openldap-clients', :utils_cfg => '/etc/openldap/ldap.conf', @@ -160,6 +166,7 @@ :lsbdistid => 'Scientific', :lsbdistrelease => '6.0', :architecture => 'x86_64', + :concat_basedir => '/var/lib/puppet/concat', :utils_pkg => 'openldap-clients', :utils_cfg => '/etc/openldap/ldap.conf', @@ -176,5 +183,26 @@ :service => 'slapd', }, + 'AIX' => { + :operatingsystem => 'AIX', + :osfamily => 'AIX', + :operatingsystemrelease => '5300-11-03-1013', + :architecture => 'IBM,9117-MMB', + :concat_basedir => '/var/lib/puppet/concat', + + :utils_pkg => 'openldap', + :utils_cfg => '/etc/openldap/ldap.conf', + :cacertdir => '/etc/openldap/cacerts', + :ssl_cert => 'ldap.pem', + :utils_owner => 'root', + :utils_group => 'system', + + :server_pkg => 'openldap-servers', + :server_prefix => '/etc/openldap', + :server_cfg => '/etc/openldap/slapd.conf', + :server_owner => 'openldap', + :service => 'ldap', + :server_group => 'openldap', + }, }