Ori.livneh has submitted this change and it was merged.

Change subject: apache: add apache::mpm
......................................................................


apache: add apache::mpm

Adds a class that lets you select an Apache Multi-Processing Module (MPM).
Prefork, worker and event are available. Prefork is the default. Trusty and
Precise are both seamlessly supported.

Tested via Vagrant on both Precise and Trusty.

Change-Id: Ic952146b5eecb1d2e163e91fc08232202c728249
---
M modules/apache/manifests/init.pp
A modules/apache/manifests/mpm.pp
2 files changed, 71 insertions(+), 1 deletion(-)

Approvals:
  Ori.livneh: Verified; Looks good to me, approved
  Filippo Giunchedi: Looks good to me, but someone else must approve



diff --git a/modules/apache/manifests/init.pp b/modules/apache/manifests/init.pp
index 73e6954..d08c1a4 100644
--- a/modules/apache/manifests/init.pp
+++ b/modules/apache/manifests/init.pp
@@ -21,8 +21,9 @@
     include apache::mod::access_compat  # enables allow/deny syntax in 2.4
     include apache::mod::filter         # enables AddOutputFilterByType in 2.4
     include apache::mod::version        # enables <IfVersion> config guards
+    include apache::mpm                 # prefork by default
 
-    package { [ 'apache2', 'apache2-mpm-prefork' ]:
+    package { 'apache2':
         ensure => present,
     }
 
diff --git a/modules/apache/manifests/mpm.pp b/modules/apache/manifests/mpm.pp
new file mode 100644
index 0000000..6379351
--- /dev/null
+++ b/modules/apache/manifests/mpm.pp
@@ -0,0 +1,69 @@
+# == Class: apache::mpm
+#
+# This class allows you to select an Apache Multi-Processing Module
+# (or MPM). MPMs are mutually exclusive; you can only enable one.
+# The MPMs available for you to choose from are prefork, worker, and
+# event.
+#
+# Worker and event scale better, but they don't work with any modules
+# which are not thread-safe, like PHP.
+#
+# See <http://httpd.apache.org/docs/current/mpm.html> for details.
+#
+# === Parameters
+#
+# [*mpm*]
+#   Name of the chosen MPM. Must be 'prefork', 'worker', or 'event'.
+#   The default is 'prefork'.
+#
+class apache::mpm( $mpm = 'prefork' ) {
+    include ::apache
+
+    $available_mpms = ['prefork', 'worker', 'event']
+    if ! member($available_mpms, $mpm) {
+        fail('mpm must be prefork, worker or event')
+    }
+
+    $selected_mod = "mpm_${mpm}"
+    $selected_pkg = "apache2-mpm-${mpm}"
+    $selected_cfg = "/etc/apache2/mods-available/mpm_${mpm}.load"
+
+    $rejected_mpms = reject($available_mpms, $mpm)
+    $rejected_mods = prefix($rejected_mpms, 'mpm_')
+    $rejected_pkgs = prefix($rejected_mpms, 'apache2-mpm-')
+
+    if $selected_mod != 'prefork' {
+        # mod_php5 is unsafe for threaded MPMs
+        apache::mod_conf { 'php5':
+            ensure => absent,
+            before => Package[$selected_pkg],
+        }
+    }
+
+    apache::mod_conf { $rejected_mods:
+        ensure => absent,
+        before => Package[$rejected_pkgs],
+    }
+
+    package { $rejected_pkgs:
+        ensure => absent,
+        before  => Package[$selected_pkg],
+    }
+
+    package { $selected_pkg:
+        ensure => present,
+        before => File[$selected_cfg],
+    }
+
+    file { $selected_cfg:
+        ensure => file,
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0444',
+        before => Apache::Mod_conf[$selected_mod],
+    }
+
+    apache::mod_conf { $selected_mod:
+        ensure => present,
+    }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/148542
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic952146b5eecb1d2e163e91fc08232202c728249
Gerrit-PatchSet: 5
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>
Gerrit-Reviewer: Alexandros Kosiaris <[email protected]>
Gerrit-Reviewer: Filippo Giunchedi <[email protected]>
Gerrit-Reviewer: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to