Mattflaschen has uploaded a new change for review.

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

Change subject: WIP: Don't use MySQL root account for DB connection
......................................................................

WIP: Don't use MySQL root account for DB connection

Bug: T86373
Change-Id: I25e3f3b0c43197835f87a8418501208c282569a8
---
M puppet/hieradata/common.yaml
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/multiwiki.pp
M puppet/modules/mediawiki/manifests/wiki.pp
M puppet/modules/role/manifests/flow.pp
5 files changed, 29 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/97/260097/1

diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
index af91aa7..e2a2521 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -203,11 +203,11 @@
 mediawiki::page_dir: "%{hiera('mwv::files_dir')}/pages"
 mediawiki::composer_fragment_dir: 
"%{hiera('mediawiki::settings_dir')}/composer"
 mediawiki::db_name: "%{hiera('mysql::default_db_name')}"
-mediawiki::db_user: root
-mediawiki::db_pass: "%{hiera('mysql::root_password')}"
 mediawiki::admin_user: admin
 mediawiki::admin_pass: vagrant
 mediawiki::server_url: 
"http://%{hiera('role::mediawiki::hostname')}%{::port_fragment}"
+
+mediawiki::wiki::db_host: '127.0.0.1'
 
 mediawiki::apache::docroot: "%{hiera('apache::docroot')}"
 
@@ -218,6 +218,8 @@
 mediawiki::multiwiki::base_domain: '.wiki.local.wmftest.net'
 mediawiki::multiwiki::script_dir: "%{hiera('mediawiki::apache::docroot')}/w"
 mediawiki::multiwiki::settings_root: 
"%{hiera('mediawiki::settings_dir')}/wikis"
+mediawiki::multiwiki::db_user: 'wikiadmin'
+mediawiki::multiwiki::db_pass: 'wikipassword'
 
 mediawiki::parsoid::dir: "%{hiera('mwv::services_dir')}/parsoid"
 mediawiki::parsoid::port: 8000
diff --git a/puppet/modules/mediawiki/manifests/init.pp 
b/puppet/modules/mediawiki/manifests/init.pp
index 7501e8b..167bc20 100644
--- a/puppet/modules/mediawiki/manifests/init.pp
+++ b/puppet/modules/mediawiki/manifests/init.pp
@@ -17,12 +17,6 @@
 # [*db_name*]
 #   Logical MySQL database name (example: 'devwiki').
 #
-# [*db_user*]
-#   MySQL user to use to connect to the database (example: 'wikidb').
-#
-# [*db_pass*]
-#   Password for MySQL account (example: 'secret123').
-#
 # [*dir*]
 #   The system path to which MediaWiki files have been installed
 #   (example: '/srv/mediawiki').
@@ -55,8 +49,6 @@
     $admin_user,
     $admin_pass,
     $db_name,
-    $db_pass,
-    $db_user,
     $dir,
     $cache_dir,
     $settings_dir,
diff --git a/puppet/modules/mediawiki/manifests/multiwiki.pp 
b/puppet/modules/mediawiki/manifests/multiwiki.pp
index 1afcacd..e56e0e7 100644
--- a/puppet/modules/mediawiki/manifests/multiwiki.pp
+++ b/puppet/modules/mediawiki/manifests/multiwiki.pp
@@ -19,10 +19,17 @@
 # [*settings_root*]
 #   Location of settings files.
 #
+# [*db_user*]
+#   Database user used by MediaWiki
+#
+# [*db_pass*]
+#   Database password used by MediaWiki
 class mediawiki::multiwiki(
     $base_domain,
     $script_dir,
     $settings_root,
+    $db_user,
+    $db_pass
 ) {
 
     File {
@@ -30,6 +37,11 @@
         group => 'www-data',
     }
 
+    mysql::user { $db_user:
+        password => $db_pass,
+        grant    => 'CREATE ON *.*'
+    }
+
     file { $settings_root:
         ensure  => directory,
         owner   => $::share_owner,
diff --git a/puppet/modules/mediawiki/manifests/wiki.pp 
b/puppet/modules/mediawiki/manifests/wiki.pp
index fbe17fb..c58552c 100644
--- a/puppet/modules/mediawiki/manifests/wiki.pp
+++ b/puppet/modules/mediawiki/manifests/wiki.pp
@@ -60,9 +60,10 @@
 #
 define mediawiki::wiki(
     $wiki_name    = $title,
+    $db_host      = '',
     $db_name      = "${title}wiki",
-    $db_user      = $::mediawiki::db_user,
-    $db_pass      = $::mediawiki::db_pass,
+    $db_user      = $::mediawiki::multiwiki::db_user,
+    $db_pass      = $::mediawiki::multiwiki::db_pass,
     $admin_user   = $::mediawiki::admin_user,
     $admin_pass   = $::mediawiki::admin_pass,
     $src_dir      = $::mediawiki::dir,
@@ -76,6 +77,10 @@
     include ::mediawiki
     require ::mediawiki::multiwiki
 
+    mysql::sql { "GRANT ALL PRIVILEGES ON ${db_name}.* TO 
${db_user}@${db_host}":
+        unless => "SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES WHERE 
TABLE_SCHEMA = '${db_name}' AND GRANTEE = \"'${db_user}'@'${db_host}'\""
+    }
+
     $settings_root = "${::mediawiki::multiwiki::settings_root}/${db_name}"
     $settings_dir = "${settings_root}/settings.d"
     $installer_args = {
@@ -87,6 +92,7 @@
         scriptpath => '/w',
         server     => $server_url,
         confpath   => $settings_root,
+        require    => Mysql::Sql["GRANT ALL PRIVILEGES ON ${db_name}.* TO 
${db_user}@${db_host}"],
     }
 
     file { [$upload_dir, $cache_dir]:
diff --git a/puppet/modules/role/manifests/flow.pp 
b/puppet/modules/role/manifests/flow.pp
index 7a6c302..7509f67 100644
--- a/puppet/modules/role/manifests/flow.pp
+++ b/puppet/modules/role/manifests/flow.pp
@@ -9,6 +9,11 @@
     include ::role::betafeatures
     include ::role::varnish
 
+    # # Equivalent to extension1 in production
+    # mysql::db { 'Flow cluster':
+    #     dbname => 'external',
+    # }
+
     mediawiki::extension { 'Flow':
         needs_update  => true,
         settings      => template('role/flow/conf.php.erb'),

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I25e3f3b0c43197835f87a8418501208c282569a8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Mattflaschen <[email protected]>

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

Reply via email to