From 192339c21993b174fe2de400c7766aad4c18da83 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Tue, 5 Apr 2016 22:36:40 -0400 Subject: [PATCH 1/6] Use defaults_extra_file first; add debug messages --- lib/puppet/provider/mysql.rb | 1 + lib/puppet/provider/mysql_datadir/mysql.rb | 13 +++++++------ lib/puppet/provider/mysql_user/mysql.rb | 2 ++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/puppet/provider/mysql.rb b/lib/puppet/provider/mysql.rb index cf76f13af..a46eb0a40 100644 --- a/lib/puppet/provider/mysql.rb +++ b/lib/puppet/provider/mysql.rb @@ -21,6 +21,7 @@ def self.defaults_file def self.mysqld_type # find the mysql "dialect" like mariadb / mysql etc. + notice("mysqld_version_string: #{mysqld_version_string}") mysqld_version_string.scan(/\s\(mariadb/i) { return "mariadb" } mysqld_version_string.scan(/\s\(mysql/i) { return "mysql" } mysqld_version_string.scan(/\s\(percona/i) { return "percona" } diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index c90d9753c..dfc9353a2 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -34,15 +34,16 @@ def create end if mysqld_version.nil? - debug("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}") - mysql_install_db(["--basedir=#{basedir}",defaults_extra_file, "--datadir=#{datadir}", "--user=#{user}"].compact) + notice("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") + mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) else + notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 - debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") - mysqld([defaults_extra_file,initialize,"--basedir=#{basedir}","--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact) + notice("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") + mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact) else - debug("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}") - mysql_install_db(["--basedir=#{basedir}",defaults_extra_file, "--datadir=#{datadir}", "--user=#{user}"].compact) + notice("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}") + mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) end end diff --git a/lib/puppet/provider/mysql_user/mysql.rb b/lib/puppet/provider/mysql_user/mysql.rb index bc4014f41..912d35fe5 100644 --- a/lib/puppet/provider/mysql_user/mysql.rb +++ b/lib/puppet/provider/mysql_user/mysql.rb @@ -16,6 +16,7 @@ def self.instances ## Default ... query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else + notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, AUTHENTICATION_STRING, PLUGIN FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else @@ -108,6 +109,7 @@ def password_hash=(string) # default ... if mysqld_version does not work mysql([defaults_file, '-e', "SET PASSWORD FOR #{merged_name} = '#{string}'"].compact) else + notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") # Version >= 5.7.6 (many password related changes) if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 if string.match(/^\*/) From d79adc00f5336c12818e56a6457130f722cad304 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Wed, 6 Apr 2016 14:48:31 -0400 Subject: [PATCH 2/6] Remove added notices and revert to debug --- lib/puppet/provider/mysql.rb | 1 - lib/puppet/provider/mysql_datadir/mysql.rb | 7 +++---- lib/puppet/provider/mysql_user/mysql.rb | 2 -- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/puppet/provider/mysql.rb b/lib/puppet/provider/mysql.rb index a46eb0a40..cf76f13af 100644 --- a/lib/puppet/provider/mysql.rb +++ b/lib/puppet/provider/mysql.rb @@ -21,7 +21,6 @@ def self.defaults_file def self.mysqld_type # find the mysql "dialect" like mariadb / mysql etc. - notice("mysqld_version_string: #{mysqld_version_string}") mysqld_version_string.scan(/\s\(mariadb/i) { return "mariadb" } mysqld_version_string.scan(/\s\(mysql/i) { return "mysql" } mysqld_version_string.scan(/\s\(percona/i) { return "percona" } diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index dfc9353a2..928d0d267 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -34,15 +34,14 @@ def create end if mysqld_version.nil? - notice("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") + debug("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) else - notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 - notice("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") + debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact) else - notice("Installing MySQL data directory with mysql_install_db --basedir=#{basedir} #{defaults_extra_file} --datadir=#{datadir} --user=#{user}") + debug("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) end end diff --git a/lib/puppet/provider/mysql_user/mysql.rb b/lib/puppet/provider/mysql_user/mysql.rb index 912d35fe5..bc4014f41 100644 --- a/lib/puppet/provider/mysql_user/mysql.rb +++ b/lib/puppet/provider/mysql_user/mysql.rb @@ -16,7 +16,6 @@ def self.instances ## Default ... query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else - notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, AUTHENTICATION_STRING, PLUGIN FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else @@ -109,7 +108,6 @@ def password_hash=(string) # default ... if mysqld_version does not work mysql([defaults_file, '-e', "SET PASSWORD FOR #{merged_name} = '#{string}'"].compact) else - notice("mysqld_type: #{mysqld_type}, mysqld_version: #{mysqld_version}") # Version >= 5.7.6 (many password related changes) if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 if string.match(/^\*/) From 0bec888f71b5b86a076632b1d4fda9501e4d5be9 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Wed, 6 Apr 2016 15:01:04 -0400 Subject: [PATCH 3/6] Add support for Percona --- lib/puppet/provider/mysql_datadir/mysql.rb | 2 +- lib/puppet/provider/mysql_user/mysql.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index 928d0d267..53a81d5de 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -37,7 +37,7 @@ def create debug("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) else - if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 + if (mysqld_type == "mysql" or mysqld_type == "percona") and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact) else diff --git a/lib/puppet/provider/mysql_user/mysql.rb b/lib/puppet/provider/mysql_user/mysql.rb index bc4014f41..91d5505d1 100644 --- a/lib/puppet/provider/mysql_user/mysql.rb +++ b/lib/puppet/provider/mysql_user/mysql.rb @@ -16,7 +16,7 @@ def self.instances ## Default ... query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else - if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 + if (mysqld_type == "mysql" or mysqld_type == "percona") and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, AUTHENTICATION_STRING, PLUGIN FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" else query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'" @@ -109,7 +109,7 @@ def password_hash=(string) mysql([defaults_file, '-e', "SET PASSWORD FOR #{merged_name} = '#{string}'"].compact) else # Version >= 5.7.6 (many password related changes) - if mysqld_type == "mysql" and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 + if (mysqld_type == "mysql" or mysqld_type == "percona") and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 if string.match(/^\*/) mysql([defaults_file, '-e', "ALTER USER #{merged_name} IDENTIFIED WITH mysql_native_password AS '#{string}'"].compact) else From 8404c8aa8cc3a79bfddb2e9f79b9110ee1232111 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Wed, 6 Apr 2016 17:27:04 -0400 Subject: [PATCH 4/6] Use log-error for mysqld initialize --- lib/puppet/provider/mysql_datadir/mysql.rb | 3 ++- lib/puppet/type/mysql_datadir.rb | 5 +++++ manifests/server/installdb.pp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index 53a81d5de..8655572d7 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -18,6 +18,7 @@ def create user = @resource.value(:user) || "mysql" basedir = @resource.value(:basedir) || "/usr" datadir = @resource.value(:datadir) || @resource[:name] + log_error = @resource.value(:log_error) || "/var/tmp/mysqld_initialize.log" unless defaults_extra_file.nil? if File.exist?(defaults_extra_file) @@ -39,7 +40,7 @@ def create else if (mysqld_type == "mysql" or mysqld_type == "percona") and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") - mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=/var/tmp/mysqld_initialize.log"].compact) + mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=#{log_error}"].compact) else debug("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) diff --git a/lib/puppet/type/mysql_datadir.rb b/lib/puppet/type/mysql_datadir.rb index 156b82766..bddb9d732 100644 --- a/lib/puppet/type/mysql_datadir.rb +++ b/lib/puppet/type/mysql_datadir.rb @@ -27,4 +27,9 @@ desc "Insecure initialization (needed for 5.7.6++)." end + newparam(:log_error) do + desc "The error log name" + newvalues(/^\//) + end + end diff --git a/manifests/server/installdb.pp b/manifests/server/installdb.pp index 78e08f521..bb8940c80 100644 --- a/manifests/server/installdb.pp +++ b/manifests/server/installdb.pp @@ -8,6 +8,7 @@ $datadir = $mysql::server::options['mysqld']['datadir'] $basedir = $mysql::server::options['mysqld']['basedir'] $config_file = $mysql::server::config_file + $log_error = $mysql::server::options['mysqld']['log-error'] if $mysql::server::manage_config_file { $_config_file=$config_file @@ -20,6 +21,7 @@ datadir => $datadir, basedir => $basedir, user => $mysqluser, + log_error => $log_error, defaults_extra_file => $_config_file, } From e7dfa7e655f30690da12ef73a9e69f391e21d1d1 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Wed, 6 Apr 2016 18:33:48 -0400 Subject: [PATCH 5/6] Improve description of error log argument --- lib/puppet/type/mysql_datadir.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/puppet/type/mysql_datadir.rb b/lib/puppet/type/mysql_datadir.rb index bddb9d732..3abf3672b 100644 --- a/lib/puppet/type/mysql_datadir.rb +++ b/lib/puppet/type/mysql_datadir.rb @@ -28,7 +28,7 @@ end newparam(:log_error) do - desc "The error log name" + desc "The path to the mysqld error log file (used with the --log_error option)" newvalues(/^\//) end From 7ab6ab487408422bce1a3c2928a5b68d826d4650 Mon Sep 17 00:00:00 2001 From: Monty Solomon Date: Wed, 6 Apr 2016 18:35:27 -0400 Subject: [PATCH 6/6] Should be --log-error --- lib/puppet/provider/mysql_datadir/mysql.rb | 2 +- lib/puppet/type/mysql_datadir.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index 8655572d7..628eb23fb 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -40,7 +40,7 @@ def create else if (mysqld_type == "mysql" or mysqld_type == "percona") and Puppet::Util::Package.versioncmp(mysqld_version, '5.7.6') >= 0 debug("Initializing MySQL data directory >= 5.7.6 with 'mysqld #{defaults_extra_file} #{initialize} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}'") - mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log_error=#{log_error}"].compact) + mysqld([defaults_extra_file, initialize, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}", "--log-error=#{log_error}"].compact) else debug("Installing MySQL data directory with mysql_install_db #{defaults_extra_file} --basedir=#{basedir} --datadir=#{datadir} --user=#{user}") mysql_install_db([defaults_extra_file, "--basedir=#{basedir}", "--datadir=#{datadir}", "--user=#{user}"].compact) diff --git a/lib/puppet/type/mysql_datadir.rb b/lib/puppet/type/mysql_datadir.rb index 3abf3672b..367767def 100644 --- a/lib/puppet/type/mysql_datadir.rb +++ b/lib/puppet/type/mysql_datadir.rb @@ -28,7 +28,7 @@ end newparam(:log_error) do - desc "The path to the mysqld error log file (used with the --log_error option)" + desc "The path to the mysqld error log file (used with the --log-error option)" newvalues(/^\//) end