From 2e6cd7aad53a6e9db97c618fa0a432fc3182574c Mon Sep 17 00:00:00 2001 From: Chris Edester Date: Fri, 1 Jan 2016 12:54:48 -0500 Subject: [PATCH] Support itk on redhat --- manifests/mod/itk.pp | 20 +++++++++++++++ spec/acceptance/itk_spec.rb | 10 +++++++- spec/classes/mod/itk_spec.rb | 49 ++++++++++++++++++++++++++++++++++++ spec/classes/mod/php_spec.rb | 10 +++++--- 4 files changed, 85 insertions(+), 4 deletions(-) diff --git a/manifests/mod/itk.pp b/manifests/mod/itk.pp index 990f853eaf..6f07966755 100644 --- a/manifests/mod/itk.pp +++ b/manifests/mod/itk.pp @@ -54,6 +54,26 @@ } case $::osfamily { + 'redhat': { + package { 'httpd-itk': + ensure => present, + } + if versioncmp($apache_version, '2.4') >= 0 { + ::apache::mpm{ 'itk': + apache_version => $apache_version, + } + } + else { + file_line { '/etc/sysconfig/httpd itk enable': + ensure => present, + path => '/etc/sysconfig/httpd', + line => 'HTTPD=/usr/sbin/httpd.itk', + match => '#?HTTPD=/usr/sbin/httpd.itk', + require => Package['httpd'], + notify => Class['apache::service'], + } + } + } 'debian', 'freebsd': { apache::mpm{ 'itk': apache_version => $apache_version, diff --git a/spec/acceptance/itk_spec.rb b/spec/acceptance/itk_spec.rb index c220a70f88..dbc8b6251b 100644 --- a/spec/acceptance/itk_spec.rb +++ b/spec/acceptance/itk_spec.rb @@ -4,7 +4,15 @@ when 'Debian' service_name = 'apache2' majrelease = fact('operatingsystemmajrelease') - if [ '6', '7', '10.04', '12.04'].include?(majrelease) + if ['6', '7', '10.04', '12.04'].include?(majrelease) + variant = :itk_only + else + variant = :prefork + end +when 'RedHat' + service_name = 'httpd' + majrelease = fact('operatingsystemmajrelease') + if ['5', '6'].include?(majrelease) variant = :itk_only else variant = :prefork diff --git a/spec/classes/mod/itk_spec.rb b/spec/classes/mod/itk_spec.rb index cd2e6c67a7..27369f1443 100644 --- a/spec/classes/mod/itk_spec.rb +++ b/spec/classes/mod/itk_spec.rb @@ -55,6 +55,55 @@ it { is_expected.to contain_file("/etc/apache2/mods-enabled/itk.load").with_ensure('link') } end end + context "on a RedHat OS" do + let :facts do + { + :osfamily => 'RedHat', + :operatingsystemrelease => '6', + :concat_basedir => '/dne', + :operatingsystem => 'RedHat', + :id => 'root', + :kernel => 'Linux', + :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + :is_pe => false, + } + end + it { is_expected.to contain_class("apache::params") } + it { is_expected.not_to contain_apache__mod('itk') } + it { is_expected.to contain_file("/etc/httpd/conf.d/itk.conf").with_ensure('file') } + it { is_expected.to contain_package("httpd-itk") } + + context "with Apache version < 2.4" do + let :params do + { + :apache_version => '2.2', + } + end + + it { is_expected.to contain_file_line("/etc/sysconfig/httpd itk enable").with({ + 'require' => 'Package[httpd]', + }) + } + end + + context "with Apache version >= 2.4" do + let :pre_condition do + 'class { "apache": mpm_module => prefork, }' + end + + let :params do + { + :apache_version => '2.4', + } + end + + it { is_expected.to contain_file("/etc/httpd/conf.d/itk.load").with({ + 'ensure' => 'file', + 'content' => "LoadModule mpm_itk_module modules/mod_mpm_itk.so\n" + }) + } + end + end context "on a FreeBSD OS" do let :pre_condition do 'class { "apache": mpm_module => false, }' diff --git a/spec/classes/mod/php_spec.rb b/spec/classes/mod/php_spec.rb index 6814b8a8f1..3aaa3d329b 100644 --- a/spec/classes/mod/php_spec.rb +++ b/spec/classes/mod/php_spec.rb @@ -117,9 +117,13 @@ let :pre_condition do 'class { "apache": mpm_module => itk, }' end - it 'should raise an error' do - expect { expect(subject).to contain_class("apache::mod::itk") }.to raise_error Puppet::Error, /Unsupported osfamily RedHat/ - end + it { is_expected.to contain_class("apache::params") } + it { is_expected.to contain_class("apache::mod::itk") } + it { is_expected.to contain_apache__mod('php5') } + it { is_expected.to contain_package("php") } + it { is_expected.to contain_file("php5.load").with( + :content => "LoadModule php5_module modules/libphp5.so\n" + ) } end end describe "on a FreeBSD OS" do