Ori.livneh has uploaded a new change for review.

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

Change subject: mediawiki: use apache module
......................................................................

mediawiki: use apache module

The MediaWiki module defines and manages its own apache service because it uses
apache service status as a way of detecting a server that has just been
newly provisioned or rebooted.

The way it is currently supposed to work is this:
* the Apache service is not started on boot; it depends on Puppet to start it.
* but Service['apache'] subscribes to Exec['mw-sync'], so mw-sync is run first.
* mw-sync only runs unless '/bin/ps -C apache2', so if Apache is already
  running, it doesn't run.

The idea is that the first Puppet run syncs the server and starts Apache.

I say "supposed to work" above because the sync-common script which mw-sync
invokes is a symlink to a file in /srv/scap which is manually deployed via
Trebuchet.  So a newly-provisioned server can't bootstrap itself anyhow.

* Check for /run/completed-sync and abort apache start if it is not there

Change-Id: I17344357a67527fe6f55eb3c9c9bda46de2cd201
---
M modules/mediawiki/files/apache/envvars.appserver
M modules/mediawiki/manifests/sync.pp
M modules/mediawiki/manifests/web.pp
M modules/mediawiki/manifests/web/config.pp
A modules/mediawiki/templates/bootstrap.command.erb
5 files changed, 18 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/20/145620/1

diff --git a/modules/mediawiki/files/apache/envvars.appserver 
b/modules/mediawiki/files/apache/envvars.appserver
index 63f662e..7f9d357 100644
--- a/modules/mediawiki/files/apache/envvars.appserver
+++ b/modules/mediawiki/files/apache/envvars.appserver
@@ -5,6 +5,9 @@
 NICE=$((-`nice`))
 HTTPD="nice -n$NICE /usr/sbin/apache2 -DPHP5"
 
+# Don't start until a sync has been completed.
+[ -e /run/completed-sync ] || exit 2
+
 # Image scaler detection
 if [ -e /etc/wikimedia-image-scaler ]; then
        HTTPD="$HTTPD -DSCALER"
diff --git a/modules/mediawiki/manifests/sync.pp 
b/modules/mediawiki/manifests/sync.pp
index 712e29c..fca6769 100644
--- a/modules/mediawiki/manifests/sync.pp
+++ b/modules/mediawiki/manifests/sync.pp
@@ -57,23 +57,12 @@
         mode   => '0644',
     }
 
-    exec { 'mw-sync':
-        command     => '/usr/local/bin/sync-common',
-        require     => File['/a/common'],
-        user        => 'root',
-        group       => 'root',
-        refreshonly => true,
-        timeout     => 600,
-        logoutput   => 'on_failure',
-    }
-
-    exec { 'mw-sync-rebuild-cdbs':
-        command     => '/usr/local/bin/scap-rebuild-cdbs',
-        subscribe   => Exec['mw-sync'],
+    exec { 'bootstrap_mediawiki':
+        command     => template('mediawiki/bootstrap.command.erb'),
+        creates     => '/run/completed-sync',
         user        => 'mwdeploy',
         group       => 'mwdeploy',
-        refreshonly => true,
-        timeout     => 600,
-        logoutput   => 'on_failure',
+        timeout     => 1200,
+        require     => File['/a/common'],
     }
 }
diff --git a/modules/mediawiki/manifests/web.pp 
b/modules/mediawiki/manifests/web.pp
index f22e07a..929032a 100644
--- a/modules/mediawiki/manifests/web.pp
+++ b/modules/mediawiki/manifests/web.pp
@@ -8,19 +8,4 @@
     file { '/usr/local/apache':
         ensure => directory,
     }
-
-    service { 'apache':
-        ensure    => running,
-        name      => 'apache2',
-        enable    => false,
-        subscribe => Exec['mw-sync'],
-        require   => File['/etc/cluster'],
-    }
-
-    # Sync the server when we see apache is not running
-    exec { 'apache-trigger-mw-sync':
-        command => '/bin/true',
-        unless  => '/bin/ps -C apache2',
-        notify  => Exec['mw-sync'],
-    }
 }
diff --git a/modules/mediawiki/manifests/web/config.pp 
b/modules/mediawiki/manifests/web/config.pp
index 3c415de..708ea66 100644
--- a/modules/mediawiki/manifests/web/config.pp
+++ b/modules/mediawiki/manifests/web/config.pp
@@ -12,22 +12,24 @@
         $max_req_workers = inline_template('<%= [( @mem_available / 
@mem_per_worker ).to_i, @apache_server_limit.to_i].min %>')
     }
 
-
+    include ::apache
 
     file { '/etc/apache2/apache2.conf':
         content => template('mediawiki/apache/apache2.conf.erb'),
         owner   => 'root',
         group   => 'root',
         mode    => '0444',
-        before  => Service['apache'],
+        before  => Service['apache2'],
+        require => Package['apache2'],
     }
 
     file { '/etc/apache2/envvars':
-        source => 'puppet:///modules/mediawiki/apache/envvars.appserver',
-        owner  => 'root',
-        group  => 'root',
-        mode   => '0444',
-        before => Service['apache'],
+        source  => 'puppet:///modules/mediawiki/apache/envvars.appserver',
+        owner   => 'root',
+        group   => 'root',
+        mode    => '0444',
+        before  => Service['apache2'],
+        require => Package['apache2'],
     }
 
 
diff --git a/modules/mediawiki/templates/bootstrap.command.erb 
b/modules/mediawiki/templates/bootstrap.command.erb
new file mode 100644
index 0000000..2ce47e6
--- /dev/null
+++ b/modules/mediawiki/templates/bootstrap.command.erb
@@ -0,0 +1 @@
+/usr/local/bin/sync-common && /usr/local/bin/scap-rebuild-cdbs && 
/usr/bin/touch /run/completed-sync

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I17344357a67527fe6f55eb3c9c9bda46de2cd201
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