Andrew Bogott has submitted this change and it was merged.
Change subject: Inline documentation for Wikidata's puppet files
......................................................................
Inline documentation for Wikidata's puppet files
Change-Id: I7d32eaaa53075d075644d5c17c38dd8d6f85c3a6
---
M manifests/role/labsmediawiki.pp
M manifests/wikidata.pp
M templates/mediawiki/labs-localsettings
M templates/mediawiki/wikidata-client-requires.php
4 files changed, 66 insertions(+), 20 deletions(-)
Approvals:
Andrew Bogott: Verified; Looks good to me, approved
jenkins-bot: Verified
diff --git a/manifests/role/labsmediawiki.pp b/manifests/role/labsmediawiki.pp
index 7ccfeff..367e052 100644
--- a/manifests/role/labsmediawiki.pp
+++ b/manifests/role/labsmediawiki.pp
@@ -31,11 +31,15 @@
class { "wikidata::singlenode":
install_repo => true,
install_client => false,
+ # get value for experimental features from labsconsole
experimental => $wikidata_experimental,
+ # get value for client_ip from labsconsole
client_ip => $wikidata_client_ip,
+ # name all repo databases "repo",
database_name => "repo",
+ # get updates from git
ensure => latest,
- # all require_once lines here:
+ # additional require_once lines can be added here:
role_requires => [
'\'wikidata_repo_requires.php\'',
],
@@ -59,11 +63,15 @@
class { "wikidata::singlenode":
install_repo => true,
install_client => false,
+ # get value for experimental features from labsconsole
experimental => $wikidata_experimental,
+ # get value for client_ip from labsconsole
client_ip => $wikidata_client_ip,
+ # name all repo databases "repo",
database_name => "repo",
+ # don't get updates from git
ensure => present,
- # all require_once lines here:
+ # additional require_once lines can be added here:
role_requires => [
'\'wikidata_repo_requires.php\'',
],
@@ -90,14 +98,20 @@
class { "wikidata::singlenode":
install_client => true,
install_repo => false,
+ # get value for experimental features from labsconsole
experimental => $wikidata_experimental,
+ # get value for repo_ip from labsconsole
repo_ip => $wikidata_repo_ip,
+ # get value for repo_url from labsconsole
repo_url => $wikidata_repo_url,
+ # get value for client's siteGlobalID (like "enwiki") from
labsconsole
siteGlobalID => $wikidata_client_siteGlobalID,
+ # name all client databases "client",
database_name => "client",
+ # get updates from git
ensure => latest,
install_path => "/srv/mediawiki",
- # all require_once lines here:
+ # additional require_once lines can be added here:
role_requires => [
'\'wikidata_client_requires.php\'',
],
@@ -123,14 +137,20 @@
class { "wikidata::singlenode":
install_client => true,
install_repo => false,
+ # get value for experimental features from labsconsole
experimental => $wikidata_experimental,
+ # get value for repo_ip from labsconsole
repo_ip => $wikidata_repo_ip,
+ # get value for repo_url from labsconsole
repo_url => $wikidata_repo_url,
+ # get value for client's siteGlobalID (like "enwiki") from
labsconsole
siteGlobalID => $wikidata_client_siteGlobalID,
+ # name all client databases "client",
database_name => "client",
+ # don't get updates from git
ensure => present,
install_path => "/srv/mediawiki",
- # all require_once lines here:
+ # additional require_once lines can be added here:
role_requires => [
'\'wikidata_client_requires.php\'',
],
diff --git a/manifests/wikidata.pp b/manifests/wikidata.pp
index 548019b..d041d32 100644
--- a/manifests/wikidata.pp
+++ b/manifests/wikidata.pp
@@ -35,13 +35,14 @@
}
# permissions for $wgCacheDir
+# make sure the parent directory exists
file { "/var/cache/mw-cache":
ensure => directory,
owner => "www-data",
group => "www-data",
mode => "0755",
}
-
+# create a directory for instance's cache named after db
file { "/var/cache/mw-cache/${database_name}":
ensure => directory,
owner => "www-data",
@@ -49,16 +50,16 @@
mode => "0755",
}
-# install either Wikibase repo or client to ${install_path}/extensions
+# The following are settings for all Wikidata instances (repo and client)
-# enable profiling
+ # enable profiling
file { "${install_path}/StartProfiler.php":
require => Exec["mediawiki_setup"],
ensure => present,
source => "puppet:///files/mediawiki/StartProfiler.php",
}
-# permit www-data to write images
+ # permit www-data to write to image folder
file { "${install_path}/images":
require => Git::Clone["mediawiki"],
ensure => directory,
@@ -68,42 +69,42 @@
recurse => true,
}
-# get the dependencies for Wikibase extension
+ # get the dependencies for Wikibase extension after the successful
installation of mediawiki core
mw-extension { [ "Diff", "DataValues" ]:
require => [Git::Clone["mediawiki"], Exec["mediawiki_setup"]],
}
-# get more extensions for Wikidata test instances
+ # get more extensions for Wikidata test instances
mw-extension { [ "DismissableSiteNotice", "ApiSandbox", "OAI",
"SiteMatrix" ]:
require => Git::Clone["mediawiki"],
}
-
+ # get "mediawiki-config" for SiteMatrix extension
git::clone { "mwconfig":
require => Git::Clone["mediawiki"],
directory => "/srv/mediawiki-config",
origin =>
"https://gerrit.wikimedia.org/r/p/operations/mediawiki-config.git",
}
-
+ # copy notitle.php file to extensions folder
file { "${install_path}/extensions/notitle.php":
require => Git::Clone["mediawiki"],
ensure => present,
source => "puppet:///files/mediawiki/notitle.php",
}
-
+ # run populateSitesTable
exec { "populateSitesTable":
require => [Mw-extension["Wikibase"],
File["${install_path}/LocalSettings.php"]],
cwd =>
"${install_path}/extensions/Wikibase/lib/maintenance",
command => "/usr/bin/php populateSitesTable.php",
logoutput => "on_failure",
}
-
+ # run the update script after having cloned Wikibase
exec { "update-script":
require => [Mw-extension["Wikibase"],
Exec["populateSitesTable"]],
cwd => "$install_path",
command => "/usr/bin/php maintenance/update.php
--quick",
logoutput => "on_failure",
}
-
+ # rebuild the LocalisationCache
exec { "localisation-cache":
require => [Mw-extension["Wikibase"],
Exec["populateSitesTable"], Exec["update-script"]],
cwd => "$install_path",
@@ -115,21 +116,25 @@
# Wikibase repo only:
if $install_repo == true {
# items are in main namespace, so main page has to be moved
first
+ # get the file you want to hand over to moveBatch.php
file {"/tmp/wikidata-move-mainpage":
ensure => present,
source =>
"puppet:///files/mediawiki/wikidata-move-mainpage",
}
+ # run moveBatch.php
exec { "repo_move_mainpage":
require => [Git::Clone["mediawiki"],
Exec["mediawiki_setup"], File["/tmp/wikidata-move-mainpage"]],
cwd => "$install_path",
command => "/usr/bin/php maintenance/moveBatch.php
--conf ${install_path}/orig/LocalSettings.php /tmp/wikidata-move-mainpage",
logoutput => "on_failure",
}
+ # get the file that contains our repo's main page
file { "${install_path}/wikidata-repo-mainpage.xml":
require => Git::Clone["mediawiki"],
ensure => present,
source =>
"puppet:///files/mediawiki/wikidata-repo-mainpage.xml",
}
+ # import our repo's main page
exec { "repo_import_mainpage":
require =>
[File["${install_path}/wikidata-repo-mainpage.xml"],
Exec["repo_move_mainpage"]],
cwd => "$install_path",
@@ -137,20 +142,24 @@
logoutput => "on_failure",
}
-# get the extensions
+ # get the extensions
+ # for repo get extensions Wikibase and ULS
mw-extension { [ "Wikibase", "UniversalLanguageSelector" ]:
require => [Git::Clone["mediawiki"],
Exec["mediawiki_setup"], Exec["repo_move_mainpage"], Mw-extension["Diff"],
Mw-extension["DataValues"]],
}
+ # put a repo specific settings file to $install_path (required
by LocalSettings.php)
file { "${install_path}/wikidata_repo_requires.php":
require => [Exec["mediawiki_setup"],
Exec["repo_move_mainpage"]],
ensure => present,
content =>
template('mediawiki/wikidata-repo-requires.php'),
}
+ # logo file for demo repo
file {
"/srv/mediawiki/skins/common/images/Wikidata-logo-demorepo.png":
require => Git::Clone["mediawiki"],
ensure => present,
source =>
"puppet:///files/mediawiki/Wikidata-logo-demorepo.png",
}
+ # import items and properties for testing
exec { "repo_import_data":
require => [Mw-extension["Wikibase"],
Exec["populateSitesTable"], Exec["update-script"]],
cwd =>
"${install_path}/extensions/Wikibase/repo/maintenance",
@@ -158,15 +167,18 @@
logoutput => "on_failure",
}
# propagation of changes from repo to client
+ # dispatchChanges is run by user www-data, check if it exists
user { "www-data":
ensure => present
}
+ # create a log file for dispatchChanges that is writeable by
www-data
file { "/var/log/dispatchChanges.log":
ensure => present,
owner => 'www-data',
group => 'www-data',
mode => '0664',
}
+ # write a cronjob for dispatchChanges to www-data's crontab
cron { "dispatchChanges":
require => File["/var/log/dispatchChanges.log"],
ensure => present,
@@ -174,6 +186,7 @@
user => "www-data",
minute => "*/10",
}
+ # make sure this log rotates sometimes
file { "/etc/logrotate.d/wikidata-replication":
ensure => present,
source =>
"puppet:///files/logrotate/wikidata-replication",
@@ -183,40 +196,46 @@
# Wikibase client only:
if $install_client == true {
-# get the extensions
+ # get the extensions
+ # for client get extensions Wikibase and ParserFunctions
mw-extension { [ "Wikibase", "ParserFunctions" ]:
require => [Git::Clone["mediawiki"],
Exec["mediawiki_setup"], Mw-extension["Diff"], Mw-extension["DataValues"]],
}
+ # put a client specific settings file to $install_path
(required by LocalSettings.php)
file { "${install_path}/wikidata_client_requires.php":
require => Exec["mediawiki_setup"],
ensure => present,
content =>
template('mediawiki/wikidata-client-requires.php'),
}
+ # logo file for demo client
file {
"/srv/mediawiki/skins/common/images/Wikidata-logo-democlient.png":
require => Git::Clone["mediawiki"],
ensure => present,
source =>
"puppet:///files/mediawiki/Wikidata-logo-democlient.png",
}
+ # run populateInterwiki
exec { "populate_interwiki":
require => [Mw-extension["Wikibase"],
Exec["update-script"]],
cwd => "$install_path",
command => "/usr/bin/php
extensions/Wikibase/client/maintenance/populateInterwiki.php",
logoutput => "on_failure",
}
-
+ # run populateSitesTable
exec { "SitesTable_client":
require => Mw-extension["Wikibase"],
cwd => "$install_path",
command => "/usr/bin/php
extensions/Wikibase/lib/maintenance/populateSitesTable.php",
logoutput => "on_failure",
}
- # receive repo's propagation of changes
+ # receive repo's propagation of changes with runJobs
+ # create a log file for runJobs that is writeable by www-data
file { "/var/log/runJobs.log":
ensure => present,
owner => 'www-data',
group => 'www-data',
mode => '0664',
}
+ # write a cronjob for runJobs to www-data's crontab
cron { "runJobs":
require => File["/var/log/runJobs.log"],
ensure => present,
@@ -224,16 +243,19 @@
user => "www-data",
minute => "*/1",
}
+ # make sure this log rotates sometimes
file { "/etc/logrotate.d/wikidata-runJobs":
ensure => present,
source => "puppet:///files/logrotate/wikidata-runJobs",
owner => 'root',
}
+ # get the dump with content for testing
file { "${install_path}/simple-elements.xml":
require => Git::Clone["mediawiki"],
ensure => present,
source =>
"puppet:///files/mediawiki/simple-elements.xml",
}
+ # import content for testing
exec { "client_import_data":
require => [Mw-extension["Wikibase"],
File["${install_path}/simple-elements.xml"]],
cwd => "$install_path",
@@ -242,7 +264,8 @@
}
}
-# longterm stuff
+# longterm stuff: "latest" option updates core and extensions from gerrit on
every puppet run.
+# This is not working for core right now, but unrelated to puppet.
if $ensure == 'latest' {
exec { 'wikidata_update':
require => [Git::Clone["mediawiki"],
diff --git a/templates/mediawiki/labs-localsettings
b/templates/mediawiki/labs-localsettings
index eca14c9..a487b4d 100644
--- a/templates/mediawiki/labs-localsettings
+++ b/templates/mediawiki/labs-localsettings
@@ -28,10 +28,12 @@
# Include the complete settings file generated by mw install
require_once( 'orig/LocalSettings.php' );
+# Offer possibility to require addition things in the respective role
<% role_requires.each do | req | -%>
require_once( <%=req%> );
<% end -%>
+# Offer possibility to add lines LocalSettings.php in the respective role
<% role_config_lines.each do | ext | -%>
<%=ext%>;
<% end -%>
diff --git a/templates/mediawiki/wikidata-client-requires.php
b/templates/mediawiki/wikidata-client-requires.php
index c8c9381..4059a70 100644
--- a/templates/mediawiki/wikidata-client-requires.php
+++ b/templates/mediawiki/wikidata-client-requires.php
@@ -37,6 +37,7 @@
$wgShowExceptionDetails = true;
+// information about the repo this client is connected to
$wgWBSettings['repoArticlePath'] = "/wiki/$1";
$wgWBSettings['repoScriptPath'] = "/w";
--
To view, visit https://gerrit.wikimedia.org/r/49232
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7d32eaaa53075d075644d5c17c38dd8d6f85c3a6
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Silke Meyer <[email protected]>
Gerrit-Reviewer: Andrew Bogott <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits