Dduvall has uploaded a new change for review.

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

Change subject: labs: Database server to support Program Dashboard
......................................................................

labs: Database server to support Program Dashboard

Provision a basic MariaDB server to store Program Dashboard data. The
data directory is kept on an LVM volume to allow for periodic
snapshotting.

Bug: T127105
Change-Id: Ie816ea8f4127c8a2c9a817c8d815f3b7956b0cde
---
A hieradata/common/programdashboard/database.yaml
A modules/programdashboard/manifests/database.pp
A modules/programdashboard/templates/my.cnf.erb
A modules/role/manifests/programdashboard/database.pp
4 files changed, 100 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/38/275138/1

diff --git a/hieradata/common/programdashboard/database.yaml 
b/hieradata/common/programdashboard/database.yaml
new file mode 100644
index 0000000..1fb7ec6
--- /dev/null
+++ b/hieradata/common/programdashboard/database.yaml
@@ -0,0 +1,2 @@
+datadir: /srv/sqldata
+tmpdir: /srv/tmp
diff --git a/modules/programdashboard/manifests/database.pp 
b/modules/programdashboard/manifests/database.pp
new file mode 100644
index 0000000..ae27f68
--- /dev/null
+++ b/modules/programdashboard/manifests/database.pp
@@ -0,0 +1,40 @@
+# = Class: programdashboard::database
+#
+# A database server for the the Program Dashboard Rails application.
+#
+# === Parameters
+#
+# [*datadir*]
+#   MariaDB data directory. An XFS formatted LVM volume will be created from
+#   80% of the instance volume's free space and mounted at this directory.
+#
+# [*tmpdir*]
+#   MariaDB temporary directory. An XFS formatted LVM volume will be created
+#   from 20% of the instance volume's free space and mounted at this
+#   directory.
+#
+class programdashboard::database(
+    $datadir,
+    $tmpdir,
+) {
+    include mariadb::packages
+
+    labs_lvm::volume { 'dashboard-data':
+        mountat => $datadir,
+        size    => '80%FREE',
+    }
+
+    labs_lvm::volume { 'dashboard-tmp':
+        mountat => $tmpdir,
+        size    => '100%FREE',
+        require => Labs_lvm::Volume['dashboard-db'],
+    }
+
+    class { 'mariadb::config':
+        prompt   => 'DASHBOARD',
+        config   => 'programdashboard/my.cnf.erb',
+        datadir  => $datadir,
+        tmpdir   => $tmpdir,
+        require  => Labs_lvm::Volume['dashboard-db', 'dashboard-tmp'],
+    }
+}
diff --git a/modules/programdashboard/templates/my.cnf.erb 
b/modules/programdashboard/templates/my.cnf.erb
new file mode 100644
index 0000000..224abb7
--- /dev/null
+++ b/modules/programdashboard/templates/my.cnf.erb
@@ -0,0 +1,46 @@
+# Use for Analytics Cluster misc meta stores (Hive, Oozie, etc.)
+
+[client]
+port   = 3306
+socket = /tmp/mysql.sock
+
+[mysqld]
+
+log_error=/var/log/mysql.err
+
+log_bin
+binlog_format = MIXED
+log_slave_updates
+skip-external-locking
+skip-name-resolve
+temp-pool
+log_basename=program-dashboard
+
+user      = mysql
+socket    = /tmp/mysql.sock
+port      = 3306
+datadir   = <%= @datadir %>
+tmpdir    = <%= @tmpdir %>
+server_id = <%= @server_id %>
+read_only = <%= (@read_only == 'off' or not @read_only) ? 0 : 1 %>
+
+max_allowed_packet = 64M
+sync_binlog        = 1
+expire_logs_days   = 7
+
+innodb_file_per_table          = 1
+innodb_log_file_size           = 64M
+innodb_flush_method            = O_DIRECT
+innodb_flush_log_at_trx_commit = 1
+innodb_buffer_pool_size        = <%= (@memoryfree_mb * 0.9).floor %>M
+innodb_buffer_pool_instances   = <%= (@memoryfree_mb * 0.9 / 1024).ceil %>
+
+query_cache_type        = 1
+query_cache_size        = 16M
+
+[mysqldump]
+
+quick
+max_allowed_packet = 16M
+
+#!includedir /etc/mysql/conf.d/
diff --git a/modules/role/manifests/programdashboard/database.pp 
b/modules/role/manifests/programdashboard/database.pp
new file mode 100644
index 0000000..682b6ab
--- /dev/null
+++ b/modules/role/manifests/programdashboard/database.pp
@@ -0,0 +1,12 @@
+# = Class: role::programdashboard::database
+#
+# This role sets up a database server for the Program Dashboard Rails
+# application.
+#
+class role::programdashboard::database {
+    include ::programdashboard::database
+
+    system::role { 'role::programdashboard::database':
+        description => 'Program Dashboard database server',
+    }
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie816ea8f4127c8a2c9a817c8d815f3b7956b0cde
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Dduvall <dduv...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to