Andrew Bogott has submitted this change and it was merged. Change subject: Refactor mediawiki::singlenode and wikidata::singlenode into modules. ......................................................................
Refactor mediawiki::singlenode and wikidata::singlenode into modules. Change-Id: I7514bc9de98507c001dd4fc2e090d38b13cc0829 --- M manifests/mediawiki.pp M manifests/role/labsmediawiki.pp M manifests/site.pp A modules/mediawiki_singlenode/manifests/init.pp A modules/mediawiki_singlenode/manifests/mw-extension.pp R modules/mediawiki_singlenode/templates/labs-localsettings R modules/mediawiki_singlenode/templates/simplewiki.wmflabs.org R modules/wikidata_singlenode/files/StartProfiler.php R modules/wikidata_singlenode/files/Wikidata-logo-demo.png R modules/wikidata_singlenode/files/Wikidata-logo-democlient.png R modules/wikidata_singlenode/files/Wikidata-logo-demorepo.png R modules/wikidata_singlenode/files/notitle.php R modules/wikidata_singlenode/files/simple-elements.xml R modules/wikidata_singlenode/files/wikidata-favicon.ico R modules/wikidata_singlenode/files/wikidata-move-mainpage R modules/wikidata_singlenode/files/wikidata-replication.logrotate R modules/wikidata_singlenode/files/wikidata-repo-mainpage.xml R modules/wikidata_singlenode/files/wikidata-runJobs.logrotate R modules/wikidata_singlenode/files/wikidata.cnf R modules/wikidata_singlenode/manifests/init.pp R modules/wikidata_singlenode/templates/wikidata-client-requires.php R modules/wikidata_singlenode/templates/wikidata-repo-requires.php 22 files changed, 153 insertions(+), 158 deletions(-) Approvals: Andrew Bogott: Verified; Looks good to me, approved jenkins-bot: Verified diff --git a/manifests/mediawiki.pp b/manifests/mediawiki.pp index 3290ebb..e357ca1 100644 --- a/manifests/mediawiki.pp +++ b/manifests/mediawiki.pp @@ -68,141 +68,6 @@ systemuser { 'mwdeploy': name => 'mwdeploy' } } -# definition to clone mediawiki extensions - define mw-extension( - # defaults - $branch="master", - $ssh="", - $owner="root", - $group="root", - $timeout="300", - $depth="full", - $mode=0755) { - git::clone { "$name": - require => git::clone["mediawiki"], - directory => "${install_path}/extensions/${name}", - origin => "https://gerrit.wikimedia.org/r/p/mediawiki/extensions/${name}.git", - branch => $branch, - ensure => $ensure, - } - } - - - -# A one-step class for setting up a single-node MediaWiki install, -# running from a Git tree. -# -# Roles can insert additional lines into LocalSettings.php via the -# $role_requires and $role_config_lines vars. -# -# Members of $role_requires will be inserted wrapped with 'require_once()'. -# -# Members of $role_config_lines will get inserted into the file verbatim -- be careful about -# quoting and escaping! Note that if you're inserting a bunch of lines you'll be better -# served by creating an additional template and including that via $role_requires. -# -# Memcached memory usage defaults to 128 megs but can be changed via $memcached_size. -class mediawiki::singlenode( $ensure = 'present', - $database_name = "testwiki", - $role_requires = [], - $install_path = "/srv/mediawiki", - $role_config_lines = [], - $memcached_size = 128) { - require "role::labs-mysql-server", - "webserver::php5-mysql", - "webserver::php5" - - package { [ "imagemagick", "php-apc", ] : - ensure => latest - } - - class { "memcached": - memcached_ip => "127.0.0.1", - memcached_size => $memcached_size } - - git::clone { "mediawiki": - directory => $install_path, - branch => "master", - timeout => 1800, - depth => 1, - ensure => $ensure, - origin => "https://gerrit.wikimedia.org/r/p/mediawiki/core.git"; - } - -# get the extensions - mw-extension { [ "Nuke", "SpamBlacklist", "ConfirmEdit" ]: - require => Git::Clone["mediawiki"], - } - - file { - "/etc/apache2/sites-available/wiki": - mode => 644, - owner => root, - group => root, - content => template('apache/sites/simplewiki.wmflabs.org'), - ensure => present; - } - - file { "/var/www/srv": - ensure => 'directory'; - } - - file { "/var/www/${install_path}": - require => [File['/var/www/srv'], git::clone['mediawiki']], - ensure => 'link', - target => $install_path; - } - - if $labs_mediawiki_hostname { - $mwserver = "http://$labs_mediawiki_hostname" - } else { - $mwserver = "http://$hostname.pmtpa.wmflabs" - } - - file { "${install_path}/orig": - require => git::clone["mediawiki"], - ensure => 'directory'; - } - - exec { 'password_gen': - require => [git::clone["mediawiki"], File["${install_path}/orig"]], - creates => "${install_path}/orig/adminpass", - command => "/usr/bin/openssl rand -base64 32 | tr -dc _A-Z-a-z-0-9 > ${install_path}/orig/adminpass" - } - - exec { 'mediawiki_setup': - require => [git::clone["mediawiki"], File["${install_path}/orig"], exec['password_gen']], - creates => "${install_path}/orig/LocalSettings.php", - command => "/usr/bin/php ${install_path}/maintenance/install.php testwiki admin --dbname $database_name --dbuser root --passfile \"${install_path}/orig/adminpass\" --server $mwserver --scriptpath \"${install_path}\" --confpath \"${install_path}/orig/\"", - logoutput => "on_failure", - } - - if $ensure == 'latest' { - exec { 'mediawiki_update': - require => [git::clone["mediawiki"], - Mw-extension["Nuke"], - Mw-extension["SpamBlacklist"], - Mw-extension["ConfirmEdit"], - File["${install_path}/LocalSettings.php"]], - command => "/usr/bin/php ${install_path}/maintenance/update.php --quick --conf \"${install_path}/LocalSettings.php\"", - logoutput => "on_failure", - } - } - - apache_site { controller: name => "wiki" } - - exec { 'apache_restart': - require => [Apache_site['controller']], - command => "/usr/sbin/service apache2 restart" - } - - file { "${install_path}/LocalSettings.php": - require => Exec["mediawiki_setup"], - content => template('mediawiki/labs-localsettings'), - ensure => present, - } -} - class mediawiki::former-extdist-removesoon { package { xinetd: ensure => absent; diff --git a/manifests/role/labsmediawiki.pp b/manifests/role/labsmediawiki.pp index e41a916..051bd2d 100644 --- a/manifests/role/labsmediawiki.pp +++ b/manifests/role/labsmediawiki.pp @@ -1,19 +1,19 @@ # Install Mediawiki from git and keep in sync with git trunk # -# Uses the mediawiki::singlenode class with minimal alterations or customizations. +# Uses the mediawiki_singlenode class with minimal alterations or customizations. class role::mediawiki-install-latest::labs { - class { "mediawiki::singlenode": + class { "mediawiki_singlenode": ensure => latest } } # Install Mediawiki from git and then leave it alone. # -# Uses the mediawiki::singlenode class with no alterations or customizations. +# Uses the mediawiki_singlenode class with no alterations or customizations. class role::mediawiki-install::labs { - class { "mediawiki::singlenode": + class { "mediawiki_singlenode": ensure => present } } @@ -28,7 +28,7 @@ # $wikidata_experimental - true || false, defaults to true, activates experimental features class role::wikidata-repo-latest::labs { - class { "wikidata::singlenode": + class { "wikidata_singlenode": install_repo => true, install_client => false, # get value for experimental features from wikitech @@ -60,7 +60,7 @@ # $wikidata_experimental - true || false, defaults to true, activates experimental features class role::wikidata-repo::labs { - class { "wikidata::singlenode": + class { "wikidata_singlenode": install_repo => true, install_client => false, # get value for experimental features from wikitech @@ -95,7 +95,7 @@ # $wikidata_experimental - true || false, defaults to true, activates experimental features class role::wikidata-client-latest::labs { - class { "wikidata::singlenode": + class { "wikidata_singlenode": install_client => true, install_repo => false, # get value for experimental features from wikitech @@ -134,7 +134,7 @@ # $wikidata_experimental - true || false, defaults to true, activates experimental features class role::wikidata-client::labs { - class { "wikidata::singlenode": + class { "wikidata_singlenode": install_client => true, install_repo => false, # get value for experimental features from wikitech diff --git a/manifests/site.pp b/manifests/site.pp index 85388f2..77688d8 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -41,7 +41,6 @@ import "varnish.pp" import "webserver.pp" import "zuul.pp" -import "wikidata.pp" # Include stages last import "stages.pp" diff --git a/modules/mediawiki_singlenode/manifests/init.pp b/modules/mediawiki_singlenode/manifests/init.pp new file mode 100644 index 0000000..5a56259 --- /dev/null +++ b/modules/mediawiki_singlenode/manifests/init.pp @@ -0,0 +1,113 @@ +# A one-step class for setting up a single-node MediaWiki install, +# running from a Git tree. +# +# Roles can insert additional lines into LocalSettings.php via the +# $role_requires and $role_config_lines vars. +# +# Members of $role_requires will be inserted wrapped with 'require_once()'. +# +# Members of $role_config_lines will get inserted into the file verbatim -- be careful about +# quoting and escaping! Note that if you're inserting a bunch of lines you'll be better +# served by creating an additional template and including that via $role_requires. +# +# Memcached memory usage defaults to 128 megs but can be changed via $memcached_size. +class mediawiki_singlenode( $ensure = 'present', + $database_name = "testwiki", + $role_requires = [], + $install_path = "/srv/mediawiki", + $role_config_lines = [], + $memcached_size = 128) { + require "role::labs-mysql-server", + "webserver::php5-mysql", + "webserver::php5" + + package { [ "imagemagick", "php-apc", ] : + ensure => latest + } + + class { "memcached": + memcached_ip => "127.0.0.1", + memcached_size => $memcached_size } + + git::clone { "mediawiki": + directory => $install_path, + branch => "master", + timeout => 1800, + depth => 1, + ensure => $ensure, + origin => "https://gerrit.wikimedia.org/r/p/mediawiki/core.git"; + } + +# get the extensions + mw-extension { [ "Nuke", "SpamBlacklist", "ConfirmEdit" ]: + require => Git::Clone["mediawiki"], + } + + file { + "/etc/apache2/sites-available/wiki": + mode => 644, + owner => root, + group => root, + content => template('mediawiki_singlenode/simplewiki.wmflabs.org'), + ensure => present; + } + + file { "/var/www/srv": + ensure => 'directory'; + } + + file { "/var/www/${install_path}": + require => [File['/var/www/srv'], git::clone['mediawiki']], + ensure => 'link', + target => $install_path; + } + + if $labs_mediawiki_hostname { + $mwserver = "http://$labs_mediawiki_hostname" + } else { + $mwserver = "http://$hostname.pmtpa.wmflabs" + } + + file { "${install_path}/orig": + require => git::clone["mediawiki"], + ensure => 'directory'; + } + + exec { 'password_gen': + require => [git::clone["mediawiki"], File["${install_path}/orig"]], + creates => "${install_path}/orig/adminpass", + command => "/usr/bin/openssl rand -base64 32 | tr -dc _A-Z-a-z-0-9 > ${install_path}/orig/adminpass" + } + + exec { 'mediawiki_setup': + require => [git::clone["mediawiki"], File["${install_path}/orig"], exec['password_gen']], + creates => "${install_path}/orig/LocalSettings.php", + command => "/usr/bin/php ${install_path}/maintenance/install.php testwiki admin --dbname $database_name --dbuser root --passfile \"${install_path}/orig/adminpass\" --server $mwserver --scriptpath \"${install_path}\" --confpath \"${install_path}/orig/\"", + logoutput => "on_failure", + } + + if $ensure == 'latest' { + exec { 'mediawiki_update': + require => [git::clone["mediawiki"], + Mw-extension["Nuke"], + Mw-extension["SpamBlacklist"], + Mw-extension["ConfirmEdit"], + File["${install_path}/LocalSettings.php"]], + command => "/usr/bin/php ${install_path}/maintenance/update.php --quick --conf \"${install_path}/LocalSettings.php\"", + logoutput => "on_failure", + } + } + + apache_site { controller: name => "wiki" } + + exec { 'apache_restart': + require => [Apache_site['controller']], + command => "/usr/sbin/service apache2 restart" + } + + file { "${install_path}/LocalSettings.php": + require => Exec["mediawiki_setup"], + content => template('mediawiki_singlenode/labs-localsettings'), + ensure => present, + } +} diff --git a/modules/mediawiki_singlenode/manifests/mw-extension.pp b/modules/mediawiki_singlenode/manifests/mw-extension.pp new file mode 100644 index 0000000..11fdadb --- /dev/null +++ b/modules/mediawiki_singlenode/manifests/mw-extension.pp @@ -0,0 +1,18 @@ +# definition to clone mediawiki extensions +define mw-extension( + # defaults + $branch="master", + $ssh="", + $owner="root", + $group="root", + $timeout="300", + $depth="full", + $mode=0755) { + git::clone { "$name": + require => git::clone["mediawiki"], + directory => "${install_path}/extensions/${name}", + origin => "https://gerrit.wikimedia.org/r/p/mediawiki/extensions/${name}.git", + branch => $branch, + ensure => $ensure, + } +} diff --git a/templates/mediawiki/labs-localsettings b/modules/mediawiki_singlenode/templates/labs-localsettings similarity index 100% rename from templates/mediawiki/labs-localsettings rename to modules/mediawiki_singlenode/templates/labs-localsettings diff --git a/templates/apache/sites/simplewiki.wmflabs.org b/modules/mediawiki_singlenode/templates/simplewiki.wmflabs.org similarity index 100% rename from templates/apache/sites/simplewiki.wmflabs.org rename to modules/mediawiki_singlenode/templates/simplewiki.wmflabs.org diff --git a/files/mediawiki/StartProfiler.php b/modules/wikidata_singlenode/files/StartProfiler.php similarity index 100% rename from files/mediawiki/StartProfiler.php rename to modules/wikidata_singlenode/files/StartProfiler.php diff --git a/files/mediawiki/Wikidata-logo-demo.png b/modules/wikidata_singlenode/files/Wikidata-logo-demo.png similarity index 100% rename from files/mediawiki/Wikidata-logo-demo.png rename to modules/wikidata_singlenode/files/Wikidata-logo-demo.png Binary files differ diff --git a/files/mediawiki/Wikidata-logo-democlient.png b/modules/wikidata_singlenode/files/Wikidata-logo-democlient.png similarity index 100% rename from files/mediawiki/Wikidata-logo-democlient.png rename to modules/wikidata_singlenode/files/Wikidata-logo-democlient.png Binary files differ diff --git a/files/mediawiki/Wikidata-logo-demorepo.png b/modules/wikidata_singlenode/files/Wikidata-logo-demorepo.png similarity index 100% rename from files/mediawiki/Wikidata-logo-demorepo.png rename to modules/wikidata_singlenode/files/Wikidata-logo-demorepo.png Binary files differ diff --git a/files/mediawiki/notitle.php b/modules/wikidata_singlenode/files/notitle.php similarity index 100% rename from files/mediawiki/notitle.php rename to modules/wikidata_singlenode/files/notitle.php diff --git a/files/mediawiki/simple-elements.xml b/modules/wikidata_singlenode/files/simple-elements.xml similarity index 100% rename from files/mediawiki/simple-elements.xml rename to modules/wikidata_singlenode/files/simple-elements.xml diff --git a/files/mediawiki/wikidata-favicon.ico b/modules/wikidata_singlenode/files/wikidata-favicon.ico similarity index 100% rename from files/mediawiki/wikidata-favicon.ico rename to modules/wikidata_singlenode/files/wikidata-favicon.ico Binary files differ diff --git a/files/mediawiki/wikidata-move-mainpage b/modules/wikidata_singlenode/files/wikidata-move-mainpage similarity index 100% rename from files/mediawiki/wikidata-move-mainpage rename to modules/wikidata_singlenode/files/wikidata-move-mainpage diff --git a/files/logrotate/wikidata-replication b/modules/wikidata_singlenode/files/wikidata-replication.logrotate similarity index 100% rename from files/logrotate/wikidata-replication rename to modules/wikidata_singlenode/files/wikidata-replication.logrotate diff --git a/files/mediawiki/wikidata-repo-mainpage.xml b/modules/wikidata_singlenode/files/wikidata-repo-mainpage.xml similarity index 100% rename from files/mediawiki/wikidata-repo-mainpage.xml rename to modules/wikidata_singlenode/files/wikidata-repo-mainpage.xml diff --git a/files/logrotate/wikidata-runJobs b/modules/wikidata_singlenode/files/wikidata-runJobs.logrotate similarity index 100% rename from files/logrotate/wikidata-runJobs rename to modules/wikidata_singlenode/files/wikidata-runJobs.logrotate diff --git a/files/mediawiki/wikidata.cnf b/modules/wikidata_singlenode/files/wikidata.cnf similarity index 100% rename from files/mediawiki/wikidata.cnf rename to modules/wikidata_singlenode/files/wikidata.cnf diff --git a/manifests/wikidata.pp b/modules/wikidata_singlenode/manifests/init.pp similarity index 89% rename from manifests/wikidata.pp rename to modules/wikidata_singlenode/manifests/init.pp index 1999861..5425cb1 100644 --- a/manifests/wikidata.pp +++ b/modules/wikidata_singlenode/manifests/init.pp @@ -5,7 +5,7 @@ # running from a Git tree. # The following are defaults, the exact specifications are in the role definitions -class wikidata::singlenode( $install_path = "/srv/mediawiki", +class wikidata_singlenode( $install_path = "/srv/mediawiki", $database_name = "repo", $experimental = "true", $repo_ip = $wikidata_repo_ip, @@ -18,7 +18,7 @@ $role_requires = ['"$IP/extensions/Diff/Diff.php"', '"$IP/extensions/DataValues/DataValues.php"', '"$IP/extensions/Wikibase/lib/WikibaseLib.php"'], $role_config_lines = [ '$wgShowExceptionDetails = true' ]) { - class { mediawiki::singlenode: + class { mediawiki_singlenode: install_path => $install_path, database_name => $database_name, ensure => $ensure, @@ -30,7 +30,7 @@ # Make mysql listen on all ports (That's o.k. in Labs) file { "/etc/mysql/conf.d/wikidata.cnf": ensure => present, - source => "puppet:///files/mediawiki/wikidata.cnf", + source => "puppet:///modules/wikidata_singlenode/wikidata.cnf", notify => Service["mysql"], } @@ -56,7 +56,7 @@ file { "${install_path}/StartProfiler.php": require => Exec["mediawiki_setup"], ensure => present, - source => "puppet:///files/mediawiki/StartProfiler.php", + source => "puppet:///modules/wikidata_singlenode/StartProfiler.php", } # permit www-data to write to image folder @@ -88,7 +88,7 @@ file { "${install_path}/extensions/notitle.php": require => Git::Clone["mediawiki"], ensure => present, - source => "puppet:///files/mediawiki/notitle.php", + source => "puppet:///modules/wikidata_singlenode/notitle.php", } # run populateSitesTable exec { "populateSitesTable": @@ -119,7 +119,7 @@ # 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", + source => "puppet:///modules/wikidata_singlenode/wikidata-move-mainpage", } # run moveBatch.php exec { "repo_move_mainpage": @@ -132,7 +132,7 @@ file { "${install_path}/wikidata-repo-mainpage.xml": require => Git::Clone["mediawiki"], ensure => present, - source => "puppet:///files/mediawiki/wikidata-repo-mainpage.xml", + source => "puppet:///modules/wikidata_singlenode/wikidata-repo-mainpage.xml", } # import our repo's main page exec { "repo_import_mainpage": @@ -151,13 +151,13 @@ file { "${install_path}/wikidata_repo_requires.php": require => [Exec["mediawiki_setup"], Exec["repo_move_mainpage"]], ensure => present, - content => template('mediawiki/wikidata-repo-requires.php'), + content => template('wikidata_singlenode/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", + source => "puppet:///modules/wikidata_singlenode/Wikidata-logo-demorepo.png", } # import items and properties for testing exec { "repo_import_data": @@ -189,7 +189,7 @@ # make sure this log rotates sometimes file { "/etc/logrotate.d/wikidata-replication": ensure => present, - source => "puppet:///files/logrotate/wikidata-replication", + source => "puppet:///modules/wikidata_singlenode/wikidata-replication.logrotate", owner => 'root', } } @@ -205,13 +205,13 @@ file { "${install_path}/wikidata_client_requires.php": require => Exec["mediawiki_setup"], ensure => present, - content => template('mediawiki/wikidata-client-requires.php'), + content => template('wikidata_singlenode/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", + source => "puppet:///modules/wikidata_singlenode/Wikidata-logo-democlient.png", } # run populateInterwiki exec { "populate_interwiki": @@ -246,14 +246,14 @@ # make sure this log rotates sometimes file { "/etc/logrotate.d/wikidata-runJobs": ensure => present, - source => "puppet:///files/logrotate/wikidata-runJobs", + source => "puppet:///modules/wikidata_singlenode/wikidata-runJobs.logrotate", 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", + source => "puppet:///modules/wikidata_singlenode/simple-elements.xml", } # import content for testing exec { "client_import_data": diff --git a/templates/mediawiki/wikidata-client-requires.php b/modules/wikidata_singlenode/templates/wikidata-client-requires.php similarity index 100% rename from templates/mediawiki/wikidata-client-requires.php rename to modules/wikidata_singlenode/templates/wikidata-client-requires.php diff --git a/templates/mediawiki/wikidata-repo-requires.php b/modules/wikidata_singlenode/templates/wikidata-repo-requires.php similarity index 100% rename from templates/mediawiki/wikidata-repo-requires.php rename to modules/wikidata_singlenode/templates/wikidata-repo-requires.php -- To view, visit https://gerrit.wikimedia.org/r/50451 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7514bc9de98507c001dd4fc2e090d38b13cc0829 Gerrit-PatchSet: 3 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Andrew Bogott <abog...@wikimedia.org> Gerrit-Reviewer: Andrew Bogott <abog...@wikimedia.org> Gerrit-Reviewer: Pyoungmeister <p...@wikimedia.org> Gerrit-Reviewer: Silke Meyer <silke.me...@wikimedia.de> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits