Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/150873

Change subject: mediawiki: use HHVM module on trusty
......................................................................

mediawiki: use HHVM module on trusty

* Get rid of various $use_hhvm/$jobrunner_hhvm-style parameters. We can't run
  MediaWiki on Trusty without HHVM, so the distro version check is both
  necessary and sufficient for determining which interpreter we should use.
* For the same reason: include ::mediawiki::hhvm from ::mediawiki if >= Trusty.
* Get rid of mediawiki::jobrunner::hhvm. There is no longer anything unique
  about the jobrunner HHVM setup. (We don't want to disable the service either
  since we're transitioning to dispatching jobs via FastCGI).
* Lint: alphabetize modules in mediawiki::web::modules; fix indent.
* Get rid of duplicate max_req_workers in mediawiki::web::modules (the modules
  class already has to call lookupvar for getting other variables from
  mediawiki::web, so there's no reason to duplicate it).

Change-Id: I4aa104920d8121033e664458bb72c59233ef3868
---
M manifests/role/mediawiki.pp
M manifests/site.pp
M modules/mediawiki/manifests/hhvm.pp
D modules/mediawiki/manifests/hhvm/params.pp
M modules/mediawiki/manifests/init.pp
D modules/mediawiki/manifests/jobrunner/hhvm.pp
D modules/mediawiki/manifests/packages/hhvm.pp
M modules/mediawiki/manifests/web.pp
M modules/mediawiki/manifests/web/modules.pp
M modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
M modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
D modules/mediawiki/templates/hhvm/hhvm.ini.erb
12 files changed, 44 insertions(+), 186 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/73/150873/1

diff --git a/manifests/role/mediawiki.pp b/manifests/role/mediawiki.pp
index 0543ced..fb62624 100644
--- a/manifests/role/mediawiki.pp
+++ b/manifests/role/mediawiki.pp
@@ -81,12 +81,4 @@
         runners_upload  => 7,
         runners_gwt     => 1,
     }
-
-    if $jobrunner_hhvm == undef {
-        $jobrunner_hhvm = false
-    }
-
-    if ($jobrunner_hhvm and versioncmp($::lsbdistrelease, '14.04') > 0) {
-        require ::mediawiki::jobrunner::hhvm
-    }
 }
diff --git a/manifests/site.pp b/manifests/site.pp
index fbb2905..281d814 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -1900,7 +1900,6 @@
     $cluster = 'jobrunner'
 
     include role::mediawiki::jobrunner
-    include mediawiki::jobrunner::hhvm
 }
 
 # mw1017-1052 are apaches (precise)
diff --git a/modules/mediawiki/manifests/hhvm.pp 
b/modules/mediawiki/manifests/hhvm.pp
index ea1c674..6c6adec 100644
--- a/modules/mediawiki/manifests/hhvm.pp
+++ b/modules/mediawiki/manifests/hhvm.pp
@@ -1,60 +1,20 @@
-# == Class mediawiki::hhvm
+# == Class: mediawiki::hhvm
 #
-# Base class to run an hhvm mediawiki environment.
+# Configures HHVM to serve MediaWiki in FastCGI mode.
 #
-# This class will ensure that the hhvm packages and basic dirs are installed.
-# It also ensures the FastCGI is in the desired state and can tweak
-# configuration according to the needs of the dependent class.
-#
-class mediawiki::hhvm(
-    $ini_overrides = {
-        'max_execution_time' => 180,
-    },
-    $service       = 'running'
-) {
-    # Install hhvm and all needed packages
-    include mediawiki::packages::hhvm
+class mediawiki::hhvm {
+    requires_ubuntu('>= trusty')
 
-    file { '/etc/hhvm':
-        ensure  => directory,
-        mode    => '0555',
-        require => Package['hhvm']
+    class { '::hhvm':
+        user          => 'apache',
+        group         => 'wikidev',
+        fcgi_settings => {
+            hhvm => { server => { source_root => 
'/usr/local/apache/common/docroot' } },
+        },
     }
 
-    file { '/run/hhvm':
-        ensure  => directory,
-        owner   => 'apache',
-        group   => 'apache',
-        mode    => '0755',
-        require => Class['mediawiki::users'],
-    }
-
-    # This directory contains the bytecode cache and should not be
-    # world accessible
-    file { '/run/hhvm/cache':
-        ensure  => directory,
-        owner   => 'apache',
-        group   => 'apache',
-        mode    => '0750',
-        before  => File['hhvm_config_ini'],
-    }
-
-    file { '/etc/hhvm/config.hdf':
-        ensure => present,
-        source => 'puppet:///modules/mediawiki/hhvm/jobrunner.hhvm.hdf',
-    }
-
-    file { 'hhvm_config_ini':
-        path    => '/etc/hhvm/php.ini',
-        ensure  => present,
-        content => template('mediawiki/hhvm/hhvm.ini.erb'),
+    alternatives::config { 'php':
+        path    => '/usr/bin/hhvm',
         require => Package['hhvm'],
-    }
-
-    # Ensure the fcgi server is stopped
-    service { 'hhvm':
-        ensure   => $service,
-        provider => 'upstart',
-        require  => Class['::mediawiki::packages::hhvm'],
     }
 }
diff --git a/modules/mediawiki/manifests/hhvm/params.pp 
b/modules/mediawiki/manifests/hhvm/params.pp
deleted file mode 100644
index e69de29..0000000
--- a/modules/mediawiki/manifests/hhvm/params.pp
+++ /dev/null
diff --git a/modules/mediawiki/manifests/init.pp 
b/modules/mediawiki/manifests/init.pp
index 9482091..5436484 100644
--- a/modules/mediawiki/manifests/init.pp
+++ b/modules/mediawiki/manifests/init.pp
@@ -6,6 +6,10 @@
 
     include ::ssh::server
 
+    if ubuntu_version('>= trusty') {
+        include ::mediawiki::hhvm
+    }
+
     file { '/etc/cluster':
         content => $::site,
         owner   => 'root',
diff --git a/modules/mediawiki/manifests/jobrunner/hhvm.pp 
b/modules/mediawiki/manifests/jobrunner/hhvm.pp
deleted file mode 100644
index 89637c8..0000000
--- a/modules/mediawiki/manifests/jobrunner/hhvm.pp
+++ /dev/null
@@ -1,35 +0,0 @@
-# == Class: mediawiki::jobrunner::hhvm
-#
-# Installs and configures hhvm so that it's used to run all jobs
-#
-# This class will ensure that hhvm packages are installed, the fastcgi
-# server is turned off and hhvm is providing /usr/bin/php via the
-# alternatives mechanism. Please note that installation of the
-# alternative will be taken care of by the debian package.
-#
-# This class should be included along with the mediawiki::jobrunner
-# class that will install the runner upstart job and all the rest
-# We also store the bytecode cache (which is persistent) in /run/hhvm
-# which is in tmpfs as a bonus.
-#
-class mediawiki::jobrunner::hhvm {
-    class { '::mediawiki::hhvm':
-        service       => 'stopped',
-        ini_overrides => {
-            'hhvm.repo.local.mode'        => '--',
-            'max_execution_time'          => 86400, # yes, one day.
-        }
-    }
-
-    # temporary while we work out luasandbox issues (bug 68413)
-    package { 'lua5.1':
-        ensure => present,
-    }
-
-    # ensure hhvm is the chosen runtime for /usr/bin/php
-    alternatives::config { 'php':
-        path        => '/usr/bin/hhvm',
-        require     => Package['hhvm']
-    }
-
-}
diff --git a/modules/mediawiki/manifests/packages/hhvm.pp 
b/modules/mediawiki/manifests/packages/hhvm.pp
deleted file mode 100644
index cf3eab2..0000000
--- a/modules/mediawiki/manifests/packages/hhvm.pp
+++ /dev/null
@@ -1,13 +0,0 @@
-# == Class: mediawiki::packages::hhvm
-#
-# Installs all the packages needed for a working hhvm installation.
-#
-# This class should be directly included wherever you need hhvm to run.
-# It works on Trusty and newer distros.
-#
-class mediawiki::packages::hhvm {
-    package { [ 'hhvm', 'hhvm-luasandbox', 'hhvm-fss', 'hhvm-wikidiff2' ]:
-        # For now, we want to always install the latest and the shiniest
-        ensure => latest
-    }
-}
diff --git a/modules/mediawiki/manifests/web.pp 
b/modules/mediawiki/manifests/web.pp
index cc94834..2775473 100644
--- a/modules/mediawiki/manifests/web.pp
+++ b/modules/mediawiki/manifests/web.pp
@@ -6,8 +6,8 @@
     include ::apache
     include ::mediawiki
     include ::mediawiki::monitoring::webserver
+    include ::mediawiki::web::modules
 
-    $use_hhvm = ubuntu_version('>= trusty')
     $apache_server_limit = 256
 
     if is_integer($workers_limit) {
@@ -16,18 +16,6 @@
         $mem_available   = to_bytes($::memorytotal) * 0.7
         $mem_per_worker  = to_bytes('85M')
         $max_req_workers = min(floor($mem_available /$mem_per_worker), 
$apache_server_limit)
-    }
-
-    if $use_hhvm {
-        class { 'mediawiki::hhvm':
-            service => 'running',
-            before  => Service['apache2']
-        }
-    }
-
-    class { '::mediawiki::web::modules':
-        use_hhvm        => $use_hhvm,
-        max_req_workers => $max_req_workers
     }
 
     file { '/etc/apache2/apache2.conf':
diff --git a/modules/mediawiki/manifests/web/modules.pp 
b/modules/mediawiki/manifests/web/modules.pp
index 1b813e6..db611a1 100644
--- a/modules/mediawiki/manifests/web/modules.pp
+++ b/modules/mediawiki/manifests/web/modules.pp
@@ -1,38 +1,16 @@
-class mediawiki::web::modules (
-    $use_hhvm = $::mediawiki::web::use_hhvm,
-    $max_req_workers = $::mediawiki::web::max_req_workers
-)
-{
+class mediawiki::web::modules {
+    include apache::mod::alias
+    include apache::mod::authz_host
     include apache::mod::autoindex
     include apache::mod::dir
-    include apache::mod::setenvif
-    include apache::mod::authz_host
     include apache::mod::expires
-    include apache::mod::rewrite
     include apache::mod::headers
-    include apache::mod::alias
     include apache::mod::mime
+    include apache::mod::rewrite
+    include apache::mod::setenvif
     include apache::mod::status
 
-    # Modules we don't enable.
-    # Note that deflate and filter are activated deep down in the
-    # apache sites, we should probably move them here
-    apache::mod_conf { [
-                        'cgi',
-                        'authn_file',
-                        'negotiation',
-                        'auth_basic',
-                        'authz_default',
-                        'authz_groupfile',
-                        'authz_user',
-                        'deflate',
-                        'env',
-                        'reqtimeout'
-                        ]:
-        ensure => absent
-    }
-
-    if $use_hhvm {
+    if ubuntu_version('>= trusty') {
         include apache::mod::proxy_fcgi
 
         # This will be useful once we switch to mpm worker. Please keep it.
@@ -44,13 +22,28 @@
             mode    => '0444',
             before  => Class['apache::mpm'],
         }
-
     } else {
         include apache::mod::php5
     }
 
+    # Modules we don't enable.
+    # Note that deflate and filter are activated deep down in the
+    # apache sites, we should probably move them here
+    apache::mod_conf { [
+        'auth_basic',
+        'authn_file',
+        'authz_default',
+        'authz_groupfile',
+        'authz_user',
+        'cgi',
+        'deflate',
+        'env',
+        'negotiation',
+        'reqtimeout',
+    ]:
+        ensure => absent,
+    }
 
-    # This will be useful once we switch to mpm worker. Please keep it.
     file { '/etc/apache2/mods-available/mpm_prefork.conf':
         ensure  => present,
         content  => template('mediawiki/apache/modules/mpm_prefork.conf.erb'),
@@ -114,5 +107,4 @@
         group   => 'root',
         mode    => '0444',
     }
-
 }
diff --git a/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb 
b/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
index 5fac8d2..12af930 100644
--- a/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
+++ b/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
@@ -9,7 +9,7 @@
     MinSpareServers     5
     MaxSpareServers     20
     ServerLimit         <%= 
scope.lookupvar('::mediawiki::web::apache_server_limit') %>
-    MaxClients          <%= @max_req_workers %>
+    MaxClients          <%= 
scope.lookupvar('::mediawiki::web::max_req_workers') %>
     <IfDefine SLOW>
         MaxClients      5
     </IfDefine>
diff --git a/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb 
b/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
index 9e465ab..901793a 100644
--- a/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
+++ b/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
@@ -12,11 +12,11 @@
 <IfModule mpm_worker_module>
         ServerLimit              <%= 
(scope.lookupvar('::mediawiki:::web::apache_server_limit') / 25).to_i + 1 %>
         StartServers             2
-        MinSpareThreads          <%= [@max_req_workers, 25].min %>
-        MaxSpareThreads          <%= @max_req_workers %>
+        MinSpareThreads          <%= 
[scope.lookupvar('::mediawiki::web::max_req_workers').to_i, 25].min %>
+        MaxSpareThreads          <%= 
scope.lookupvar('::mediawiki::web::max_req_workers') %>
         ThreadLimit              256
         ThreadsPerChild          25
-        MaxRequestWorkers        <%= @max_req_workers %>
+        MaxRequestWorkers        <%= 
scope.lookupvar('::mediawiki::web::max_req_workers') %>
         MaxConnectionsPerChild   10000
 </IfModule>
 
diff --git a/modules/mediawiki/templates/hhvm/hhvm.ini.erb 
b/modules/mediawiki/templates/hhvm/hhvm.ini.erb
deleted file mode 100644
index d718ee4..0000000
--- a/modules/mediawiki/templates/hhvm/hhvm.ini.erb
+++ /dev/null
@@ -1,29 +0,0 @@
-; PHP options
-date.timezone = "UTC"
-include_path = '.:/usr/share/php:/usr/share/pear'
-pid = /run/hhvm/cache/hhvm.pid
-
-; Extensions
-hhvm.dynamic_extension_path = /usr/lib/hphp/extensions/20140702
-hhvm.enable_zend_compat = true
-hhvm.mysql.typed_results = false
-
-; Runtime
-hhvm.enable_obj_destruct_call = true
-
-; JIT
-hhvm.jit = false
-hhvm.jit_afrozen_size = 100000000
-
-; Logging
-hhvm.log.always_log_unhandled_exceptions = true
-hhvm.log.level = Error
-hhvm.log.runtime_error_reporting_level = 8191
-hhvm.log.use_syslog = true
-
-; Repo
-hhvm.repo.central.path = /run/hhvm/hhvm.hhbc.sq3
-
-<% @ini_overrides.sort.each do |k,v| -%>
-<%= k %> = <%= v %> 
-<% end -%>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4aa104920d8121033e664458bb72c59233ef3868
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>

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

Reply via email to