Pyoungmeister has submitted this change and it was merged.
Change subject: WIP: first bit of stuff for taming the mysql module and making
the SANITARIUM
......................................................................
WIP: first bit of stuff for taming the mysql module and making the SANITARIUM
Change-Id: Ifb7c6a717812906d584fe2a79fc7a507cf7fd45e
---
M manifests/role/db.pp
M manifests/site.pp
M modules/mysql/manifests/config.pp
M modules/mysql/manifests/params.pp
M modules/mysql/manifests/server.pp
M modules/mysql/manifests/server/config.pp
M modules/mysql/templates/my.cnf.erb
A modules/mysql/templates/mysql.init.erb
8 files changed, 611 insertions(+), 15 deletions(-)
Approvals:
Pyoungmeister: Looks good to me, approved
jenkins-bot: Verified
diff --git a/manifests/role/db.pp b/manifests/role/db.pp
index e4de5db..a9f405c 100644
--- a/manifests/role/db.pp
+++ b/manifests/role/db.pp
@@ -1,5 +1,6 @@
# role/db.pp
-# db::core and db::es
+# db::core for a few remaining m1 boxes
+# or db::sanitarium or db::labsdb for the labsdb project
class role::db::core {
$cluster = "mysql"
@@ -10,3 +11,114 @@
mysql_wmf
}
+
+class role::db::sanitarium {
+ class base {
+ $cluster = "mysql"
+
+ system_role {"role::db::sanitarium": description => "pre-labsdb dbs for
Data Sanitization" }
+
+ include standard,
+ mysql::params
+
+ class { mysql :
+ package_name => 'mariadb-client-5.5'
+ }
+ }
+
+ define instance(
+ $port
+ ){
+
+ $serverid = inline_template("<%= (ia = ipaddress.split('.'); server_id =
ia[0] + ia[2] + ia[3] + $port; return server_id) %>")
+ $ram = inline_template("<%= ram = memorysize.split[0]; ram =
Float(ram) * 0.75; ram = ram.round; ram = String(ram); return ram %>G")
+
+ include role::db::sanitarium::base
+
+ class { mysql::config :
+ port => $port,
+ config_file => "/etc/my.cnf.$port",
+ socket => "/tmp/mysql.$port.sock",
+ pidfile => "/a/sqldata.$port/mysql.pid",
+ datadir => "/a/sqldata.$port/",
+ multi_instance => true,
+ }
+
+ class { mysql::server :
+ package_name => 'mariadb-server-5.5',
+ config_hash => {
+ 'client' => {
+
+ }
+ }
+ }
+
+ file { "/etc/init.d/mysql-${port}":
+ owner => root,
+ group => root,
+ mode => 0555,
+ source => "puppet:///modules/mysql/mysql.init.erb"
+ }
+
+ mysql::server::config {"my.cnf.${port}" :
+ settings => {
+ 'mysqld' => {
+ 'server_id' => $serverid,
+ 'read_only' => 1,
+ 'innodb_file_per_table' => true,
+ 'query_cache_type' => 0,
+ 'log_slow_verbosity' => 'Query_plan',
+ 'optimizer_switch' => 'extended_keys=on',
+ 'innodb-adaptive-flushing' => 1,
+ 'innodb-buffer-pool-size' => $ram,
+ 'innodb-flush-method' => 'O_DIRECT',
+ 'innodb-io-capacity' => 1000,
+ 'innodb-log-file-size' => "500M",
+ 'innodb-old-blocks-pct' => 80,
+ 'innodb-old-blocks-time' => 1000,
+ 'innodb-read-io-threads' => 16,
+ 'innodb-thread-concurrency' => 0,
+ 'innodb-use-sys-malloc' => true,
+ 'innodb-write-io-threads' => 8,
+ 'innodb-checksums' =>1,
+ 'max_connections' => 5000,
+ 'table_open_cache' => 50000,
+ 'table_definition_cache' => 40000,
+ 'query_cache_size' => 0,
+ 'log_slow_queries' => true,
+ 'long_query_time' => 0.45,
+ 'log_bin' => true,
+ 'log_slave_updates' => true,
+ 'sync_binlog' => 1,
+ 'binlog_cache_size' => "1M",
+ 'max_binlog_size' => "1000M",
+ 'binlog_format'=> "statement",
+ 'expire_logs_days' => 30,
+ 'connect_timeout'=>3,
+ 'back_log'=>1000,
+ 'max_connect_errors'=>1000000000,
+ 'temp-pool' => true,
+ }
+ }
+ }
+
+ }
+
+}
+
+class role::db::labsdb {
+ $cluster = "mysql"
+
+ system_role {"role::db::labsdb": description => "labsdb dbs for labs use" }
+
+ include standard
+
+ include mysql::params
+ class { mysql::config : }
+
+ class { mysql::server : }
+
+ class { mysql :
+ package_name => 'mariadb-client-5.5'
+ }
+}
diff --git a/manifests/site.pp b/manifests/site.pp
index 4dc3fc5..9867d82 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -549,6 +549,23 @@
class { role::coredb::researchdb : mariadb => true,
innodb_file_per_table => true }
}
+## SANITARIUM
+node /^db1053\.eqiad\.wmnet/ {
+ include role::db::sanitarium::base
+
+ role::db::sanitarium::instance { "s1" :
+ port => 3306,
+ }
+}
+
+node /^db1054\.eqiad\.wmnet/ {
+
+}
+
+node /^db1055\.eqiad\.wmnet/ {
+
+}
+
## not currently in production and/or hardware issues
node /^db10(1[23456]|2[3]|3[2367]|4[45])\.eqiad\.wmnet/ {
include standard
diff --git a/modules/mysql/manifests/config.pp
b/modules/mysql/manifests/config.pp
index 440246a..2b7fcd8 100644
--- a/modules/mysql/manifests/config.pp
+++ b/modules/mysql/manifests/config.pp
@@ -52,7 +52,8 @@
$default_engine = 'UNSET',
$root_group = $mysql::params::root_group,
$restart = $mysql::params::restart,
- $purge_conf_dir = false
+ $purge_conf_dir = false,
+ $multi_instance = false
) inherits mysql::params {
File {
diff --git a/modules/mysql/manifests/params.pp
b/modules/mysql/manifests/params.pp
index bcae026..c0196a1 100644
--- a/modules/mysql/manifests/params.pp
+++ b/modules/mysql/manifests/params.pp
@@ -16,7 +16,7 @@
$port = 3306
$etc_root_password = false
$ssl = false
- $restart = true
+ $restart = false
case $::operatingsystem {
'Ubuntu': {
@@ -85,14 +85,14 @@
'Debian': {
$basedir = '/usr'
- $datadir = '/var/lib/mysql'
+ $datadir = '/a/sqldata/'
$service_name = 'mysql'
$client_package_name = 'mysql-client'
$server_package_name = 'mysql-server'
- $socket = '/var/run/mysqld/mysqld.sock'
- $pidfile = '/var/run/mysqld/mysqld.pid'
+ $socket = "/tmp/mysqld.sock"
+ $pidfile = "/a/sqldata/${::hostname}.pid"
$config_file = '/etc/mysql/my.cnf'
- $log_error = '/var/log/mysql/error.log'
+ $log_error = "/a/sqldata/${::hostname}.log"
$ruby_package_name = 'libmysql-ruby'
$python_package_name = 'python-mysqldb'
$php_package_name = 'php5-mysql'
diff --git a/modules/mysql/manifests/server.pp
b/modules/mysql/manifests/server.pp
index b900142..0ef0af7 100644
--- a/modules/mysql/manifests/server.pp
+++ b/modules/mysql/manifests/server.pp
@@ -21,7 +21,7 @@
$service_provider = $mysql::params::service_provider,
$config_hash = {},
$enabled = true,
- $manage_service = true
+ $manage_service = false
) inherits mysql::params {
Class['mysql::server'] -> Class['mysql::config']
@@ -30,9 +30,27 @@
create_resources( 'class', $config_class )
+ if $package_name =~ /mariadb/ {
+ file { "/etc/apt/sources.list.d/wikimedia-mariadb.list":
+ owner => root,
+ group => root,
+ mode => 0444,
+ source => "puppet:///modules/coredb_mysql/wikimedia-mariadb.list"
+ }
+ exec { "update_mysql_apt":
+ subscribe => File['/etc/apt/sources.list.d/wikimedia-mariadb.list'],
+ command => "/usr/bin/apt-get update",
+ refreshonly => true;
+ }
+ }
+
package { 'mysql-server':
- ensure => $package_ensure,
- name => $package_name,
+ ensure => $package_ensure,
+ name => $package_name,
+ require => $package_name ? {
+ "mariadb-server-5.5" =>
File["/etc/apt/sources.list.d/wikimedia-mariadb.list"],
+ default => true,
+ }
}
if $enabled {
diff --git a/modules/mysql/manifests/server/config.pp
b/modules/mysql/manifests/server/config.pp
index ddd034e..65dc784 100644
--- a/modules/mysql/manifests/server/config.pp
+++ b/modules/mysql/manifests/server/config.pp
@@ -83,7 +83,7 @@
#
define mysql::server::config (
$settings,
- $notify_service = true
+ $notify_service = false
) {
include mysql::config
@@ -93,7 +93,7 @@
$content = $settings
}
- file { "/etc/mysql/conf.d/${name}.cnf":
+ file { "/etc/mysql/conf.d/${name}":
ensure => file,
content => $content,
owner => 'root',
diff --git a/modules/mysql/templates/my.cnf.erb
b/modules/mysql/templates/my.cnf.erb
index 8a764bc..7af0361 100644
--- a/modules/mysql/templates/my.cnf.erb
+++ b/modules/mysql/templates/my.cnf.erb
@@ -14,17 +14,17 @@
port = <%= port %>
basedir = <%= basedir %>
datadir = <%= datadir %>
-tmpdir = /tmp
+tmpdir = /a/tmp
skip-external-locking
<% if bind_address %>
bind-address = <%= bind_address %>
<% end %>
-key_buffer = 16M
+key_buffer = 1M
max_allowed_packet = 16M
thread_stack = 192K
-thread_cache_size = 8
+thread_cache_size = 300
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
@@ -49,4 +49,8 @@
[mysql]
[isamchk]
key_buffer = 16M
+<% if multi_instance == true -%>
+!include /etc/mysql/conf.d/my.cnf.$port
+<% else %>
!includedir /etc/mysql/conf.d/
+<% end -%>
diff --git a/modules/mysql/templates/mysql.init.erb
b/modules/mysql/templates/mysql.init.erb
new file mode 100755
index 0000000..c10829f
--- /dev/null
+++ b/modules/mysql/templates/mysql.init.erb
@@ -0,0 +1,444 @@
+#!/bin/sh
+# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
+# This file is public domain and comes with NO WARRANTY of any kind
+
+# MySQL daemon start/stop script.
+
+# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
+# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
+# When this is done the mysql server will be started when the machine is
+# started and shut down when the systems goes down.
+
+# Comments to support chkconfig on RedHat Linux
+# chkconfig: 2345 64 36
+# description: A very fast and reliable SQL database engine.
+
+# Comments to support LSB init script conventions
+### BEGIN INIT INFO
+# Provides: mysql
+# Required-Start: $local_fs $network $remote_fs
+# Should-Start: ypbind nscd ldap ntpd xntpd
+# Required-Stop: $local_fs $network $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: start and stop MySQL
+# Description: MySQL is a very fast and reliable SQL database engine.
+### END INIT INFO
+
+# If you install MySQL on some other places than /usr, then you
+# have to do one of the following things for this script to work:
+#
+# - Run this script from within the MySQL installation directory
+# - Create a /etc/my.cnf file with the following information:
+# [mysqld]
+# basedir=<path-to-mysql-installation-directory>
+# - Add the above to any other configuration file (for example ~/.my.ini)
+# and copy my_print_defaults to /usr/local/bin
+# - Add the path to the mysql-installation-directory to the basedir variable
+# below.
+#
+# If you want to affect other MySQL variables, you should make your changes
+# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.
+
+# If you change base dir, you must also change datadir. These may get
+# overwritten by settings in the MySQL configuration files.
+
+basedir=/usr
+datadir=
+
+# Default value, in seconds, afterwhich the script should timeout waiting
+# for server start.
+# Value here is overriden by value in my.cnf.
+# 0 means don't wait at all
+# Negative numbers mean to wait indefinitely
+service_startup_timeout=900
+
+# The following variables are only set for letting mysql.server find things.
+
+# Set some defaults
+pid_file=
+server_pid_file=
+use_mysqld_safe=1
+user=mysql
+if test -z "$basedir"
+then
+ basedir=/usr/local
+ bindir=./bin
+ if test -z "$datadir"
+ then
+ datadir=/var/lib/mysql
+ fi
+ sbindir=./bin
+ libexecdir=./bin
+else
+ bindir="$basedir/bin"
+ if test -z "$datadir"
+ then
+ datadir="$basedir/data"
+ fi
+ sbindir="$basedir/sbin"
+ libexecdir="$basedir/libexec"
+fi
+
+# datadir_set is used to determine if datadir was set (and so should be
+# *not* set inside of the --basedir= handler.)
+datadir_set=
+
+#
+# Use LSB init script functions for printing messages, if possible
+#
+lsb_functions="/lib/lsb/init-functions"
+if test -f $lsb_functions ; then
+ . $lsb_functions
+else
+ log_success_msg()
+ {
+ echo " SUCCESS! $@"
+ }
+ log_failure_msg()
+ {
+ echo " ERROR! $@"
+ }
+fi
+
+PATH=/sbin:/usr/local/sbin:/bin:/usr/bin:$basedir/bin
+export PATH
+
+mode=$1 # start or stop
+shift
+other_args="$*" # uncommon, but needed when called from an RPM upgrade action
+ # Expected: "--skip-networking --skip-grant-tables"
+ # They are not checked here, intentionally, as it is the
resposibility
+ # of the "spec" file author to give correct arguments only.
+
+case `echo "testing\c"`,`echo -n testing` in
+ *c*,-n*) echo_n= echo_c= ;;
+ *c*,*) echo_n=-n echo_c= ;;
+ *) echo_n= echo_c='\c' ;;
+esac
+
+parse_server_arguments() {
+ for arg do
+ case "$arg" in
+ --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'`
+ bindir="$basedir/bin"
+ if test -z "$datadir_set"; then
+ datadir="$basedir/data"
+ fi
+ sbindir="$basedir/sbin"
+ libexecdir="$basedir/libexec"
+ ;;
+ --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`
+ datadir_set=1
+ ;;
+ --user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --pid-file=*) server_pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed
-e 's/^[^=]*=//'` ;;
+ --use-mysqld_safe) use_mysqld_safe=1;;
+ --use-manager) use_mysqld_safe=0;;
+ esac
+ done
+}
+
+parse_manager_arguments() {
+ for arg do
+ case "$arg" in
+ --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ esac
+ done
+}
+
+wait_for_pid () {
+ verb="$1"
+ manager_pid="$2" # process ID of the program operating on the pid-file
+ i=0
+ avoid_race_condition="by checking again"
+ while test $i -ne $service_startup_timeout ; do
+
+ case "$verb" in
+ 'created')
+ # wait for a PID-file to pop into existence.
+ test -s $pid_file && i='' && break
+ ;;
+ 'removed')
+ # wait for this PID-file to disappear
+ test ! -s $pid_file && i='' && break
+ ;;
+ *)
+ echo "wait_for_pid () usage: wait_for_pid created|removed manager_pid"
+ exit 1
+ ;;
+ esac
+
+ # if manager isn't running, then pid-file will never be updated
+ if test -n "$manager_pid"; then
+ if kill -0 "$manager_pid" 2>/dev/null; then
+ : # the manager still runs
+ else
+ # The manager may have exited between the last pid-file check and now.
+ if test -n "$avoid_race_condition"; then
+ avoid_race_condition=""
+ continue # Check again.
+ fi
+
+ # there's nothing that will affect the file.
+ log_failure_msg "Manager of pid-file quit without updating file."
+ return 1 # not waiting any more.
+ fi
+ fi
+
+ echo $echo_n ".$echo_c"
+ i=`expr $i + 1`
+ sleep 1
+ done
+
+ if test -z "$i" ; then
+ log_success_msg
+ return 0
+ else
+ log_failure_msg
+ return 1
+ fi
+}
+
+# Get arguments from the my.cnf file,
+# the only group, which is read from now on is [mysqld]
+if test -x ./bin/my_print_defaults
+then
+ print_defaults="./bin/my_print_defaults"
+elif test -x $bindir/my_print_defaults
+then
+ print_defaults="$bindir/my_print_defaults"
+elif test -x $bindir/mysql_print_defaults
+then
+ print_defaults="$bindir/mysql_print_defaults"
+else
+ # Try to find basedir in /etc/my.cnf
+ conf=<%= $mysql::config::config_file %>
+ print_defaults=
+ if test -r $conf
+ then
+ subpat='^[^=]*basedir[^=]*=\(.*\)$'
+ dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
+ for d in $dirs
+ do
+ d=`echo $d | sed -e 's/[ ]//g'`
+ if test -x "$d/bin/my_print_defaults"
+ then
+ print_defaults="$d/bin/my_print_defaults"
+ break
+ fi
+ if test -x "$d/bin/mysql_print_defaults"
+ then
+ print_defaults="$d/bin/mysql_print_defaults"
+ break
+ fi
+ done
+ fi
+
+ # Hope it's in the PATH ... but I doubt it
+ test -z "$print_defaults" && print_defaults="my_print_defaults"
+fi
+
+#
+# Read defaults file from 'basedir'. If there is no defaults file there
+# check if it's in the old (depricated) place (datadir) and read it from there
+#
+
+extra_args=""
+if test -r "$basedir/my.cnf"
+then
+ extra_args="-e $basedir/my.cnf"
+else
+ if test -r "$datadir/my.cnf"
+ then
+ extra_args="-e $datadir/my.cnf"
+ fi
+fi
+
+parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server
mysql.server`
+
+# Look for the pidfile
+parse_manager_arguments `$print_defaults $extra_args manager`
+
+#
+# Set pid file if not given
+#
+if test -z "$pid_file"
+then
+ pid_file=$datadir/mysqlmanager-`/bin/hostname`.pid
+else
+ case "$pid_file" in
+ /* ) ;;
+ * ) pid_file="$datadir/$pid_file" ;;
+ esac
+fi
+if test -z "$server_pid_file"
+then
+ server_pid_file=$datadir/`/bin/hostname`.pid
+else
+ case "$server_pid_file" in
+ /* ) ;;
+ * ) server_pid_file="$datadir/$server_pid_file" ;;
+ esac
+fi
+
+case "$mode" in
+ 'start')
+ # Start daemon
+
+ # Safeguard (relative paths, core dumps..)
+ cd $basedir
+
+ manager=$bindir/mysqlmanager
+ if test -x $libexecdir/mysqlmanager
+ then
+ manager=$libexecdir/mysqlmanager
+ elif test -x $sbindir/mysqlmanager
+ then
+ manager=$sbindir/mysqlmanager
+ fi
+
+ echo $echo_n "Starting MySQL"
+ if test -x $manager -a "$use_mysqld_safe" = "0"
+ then
+ if test -n "$other_args"
+ then
+ log_failure_msg "MySQL manager does not support options '$other_args'"
+ exit 1
+ fi
+ # Give extra arguments to mysqld with the my.cnf file. This script may
+ # be overwritten at next upgrade.
+ "$manager" \
+ --mysqld-safe-compatible \
+ --user="$user" \
+ --pid-file="$pid_file" >/dev/null 2>&1 &
+ wait_for_pid created $!; return_value=$?
+
+ # Make lock for RedHat / SuSE
+ if test -w /var/lock/subsys
+ then
+ touch /var/lock/subsys/mysqlmanager
+ fi
+ exit $return_value
+ elif test -x $bindir/mysqld_safe
+ then
+ # Give extra arguments to mysqld with the my.cnf file. This script
+ # may be overwritten at next upgrade.
+ pid_file=$server_pid_file
+ $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file
$other_args >/dev/null 2>&1 &
+ wait_for_pid created $!; return_value=$?
+
+ # Make lock for RedHat / SuSE
+ if test -w /var/lock/subsys
+ then
+ touch /var/lock/subsys/mysql
+ fi
+ exit $return_value
+ else
+ log_failure_msg "Couldn't find MySQL manager ($manager) or server
($bindir/mysqld_safe)"
+ fi
+ ;;
+
+ 'stop')
+ # Stop daemon. We use a signal here to avoid having to know the
+ # root password.
+
+ # The RedHat / SuSE lock directory to remove
+ lock_dir=/var/lock/subsys/mysqlmanager
+
+ # If the manager pid_file doesn't exist, try the server's
+ if test ! -s "$pid_file"
+ then
+ pid_file=$server_pid_file
+ lock_dir=/var/lock/subsys/mysql
+ fi
+
+ if test -s "$pid_file"
+ then
+ mysqlmanager_pid=`cat $pid_file`
+
+ if (kill -0 $mysqlmanager_pid 2>/dev/null)
+ then
+ echo $echo_n "Shutting down MySQL"
+ kill $mysqlmanager_pid
+ # mysqlmanager should remove the pid_file when it exits, so wait for
it.
+ wait_for_pid removed "$mysqlmanager_pid"; return_value=$?
+ else
+ log_failure_msg "MySQL manager or server process #$mysqlmanager_pid is
not running!"
+ rm $pid_file
+ fi
+
+ # delete lock for RedHat / SuSE
+ if test -f $lock_dir
+ then
+ rm -f $lock_dir
+ fi
+ exit $return_value
+ else
+ log_failure_msg "MySQL manager or server PID file could not be found!"
+ fi
+ ;;
+
+ 'restart')
+ # Stop the service and regardless of whether it was
+ # running or not, start it again.
+ if $0 stop $other_args; then
+ $0 start $other_args
+ else
+ log_failure_msg "Failed to stop running server, so refusing to try to
start."
+ exit 1
+ fi
+ ;;
+
+ 'reload'|'force-reload')
+ if test -s "$server_pid_file" ; then
+ read mysqld_pid < $server_pid_file
+ kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"
+ touch $server_pid_file
+ else
+ log_failure_msg "MySQL PID file could not be found!"
+ exit 1
+ fi
+ ;;
+ 'status')
+ # First, check to see if pid file exists
+ if test -s "$server_pid_file" ; then
+ read mysqld_pid < $server_pid_file
+ if kill -0 $mysqld_pid 2>/dev/null ; then
+ log_success_msg "MySQL running ($mysqld_pid)"
+ exit 0
+ else
+ log_failure_msg "MySQL is not running, but PID file exists"
+ exit 1
+ fi
+ else
+ # Try to find appropriate mysqld process
+ mysqld_pid=`pidof $libexecdir/mysqld`
+ if test -z $mysqld_pid ; then
+ if test "$use_mysqld_safe" = "0" ; then
+ lockfile=/var/lock/subsys/mysqlmanager
+ else
+ lockfile=/var/lock/subsys/mysql
+ fi
+ if test -f $lockfile ; then
+ log_failure_msg "MySQL is not running, but lock exists"
+ exit 2
+ fi
+ log_failure_msg "MySQL is not running"
+ exit 3
+ else
+ log_failure_msg "MySQL is running but PID file could not be found"
+ exit 4
+ fi
+ fi
+ ;;
+ *)
+ # usage
+ echo "Usage: $0 {start|stop|restart|reload|force-reload|status} [
MySQL server options ]"
+ exit 1
+ ;;
+esac
+
+exit 0
--
To view, visit https://gerrit.wikimedia.org/r/53907
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifb7c6a717812906d584fe2a79fc7a507cf7fd45e
Gerrit-PatchSet: 6
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Pyoungmeister <[email protected]>
Gerrit-Reviewer: Pyoungmeister <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits