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