From a019f615333828a33295dcb755ff9a6d7037c68f Mon Sep 17 00:00:00 2001 From: Eugeny Kisel <ekisel@objectstyle.com> Date: Fri, 22 May 2020 14:33:13 +0300 Subject: [PATCH 1/5] Added a case statement to include executing manage_dirs on the class config only for Debian, because there's dependency of Debian tool unless => "/usr/bin/dpkg -s ${mysql::server::package_name}", Created the parameter managed_dirs for the class mysql::server to allow use the class mysql::server::managed_dirs --- manifests/server.pp | 1 + manifests/server/config.pp | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/manifests/server.pp b/manifests/server.pp index 8c8a30f1c..fd212f997 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -91,6 +91,7 @@ $mysql_group = $mysql::params::mysql_group, $mycnf_owner = $mysql::params::mycnf_owner, $mycnf_group = $mysql::params::mycnf_group, + $managed_dirs = undef, $root_password = $mysql::params::root_password, $service_enabled = $mysql::params::server_service_enabled, $service_manage = $mysql::params::server_service_manage, diff --git a/manifests/server/config.pp b/manifests/server/config.pp index 3082cd4ff..94d508ed1 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -36,18 +36,22 @@ } #Debian: Creating world readable directories before installing. - if $managed_dirs { - $managed_dirs.each | $entry | { - $dir = $options['mysqld']["${entry}"] - if ( $dir and $dir != '/usr' and $dir != '/tmp' ) { - exec {"${entry}-managed_dir-mkdir": - command => "/bin/mkdir -p ${dir}", - unless => "/usr/bin/dpkg -s ${mysql::server::package_name}", - notify => Exec["${entry}-managed_dir-chmod"], - } - exec {"${entry}-managed_dir-chmod": - command => "/bin/chmod 777 ${dir}", - refreshonly => true, + case $::operatingsystem { + 'Debian': { + if $managed_dirs { + $managed_dirs.each | $entry | { + $dir = $options['mysqld']["${entry}"] + if ( $dir and $dir != '/usr' and $dir != '/tmp' ) { + exec {"${entry}-managed_dir-mkdir": + command => "/bin/mkdir -p ${dir}", + unless => "/usr/bin/dpkg -s ${mysql::server::package_name}", + notify => Exec["${entry}-managed_dir-chmod"], + } + exec {"${entry}-managed_dir-chmod": + command => "/bin/chmod 777 ${dir}", + refreshonly => true, + } + } } } } From e1839deb1737c9da71d4a63660365de23b5d6712 Mon Sep 17 00:00:00 2001 From: Eugeny Kisel <ekisel@objectstyle.com> Date: Mon, 1 Jun 2020 11:25:54 +0300 Subject: [PATCH 2/5] Updated REFERENCES for the new parameter managed_dirs. --- REFERENCE.md | 9 +++++++++ manifests/server.pp | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/REFERENCE.md b/REFERENCE.md index 0e3a8c66e..b4e81559e 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -455,6 +455,15 @@ Whether the MySQL configuration file should be managed. Valid values are `true`, Default value: $mysql::params::manage_config_file +##### `managed_dirs` + +Data type: `Any` + +Manage MySQL system directories which described in the section `[mysqld]` of the configuration file +`my.cnf` + +Default value: `undef` + ##### `options` Data type: `Mysql::Options` diff --git a/manifests/server.pp b/manifests/server.pp index fd212f997..31f82bfa6 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -88,10 +88,10 @@ $remove_default_accounts = false, $restart = $mysql::params::restart, $root_group = $mysql::params::root_group, + $managed_dirs = undef, $mysql_group = $mysql::params::mysql_group, $mycnf_owner = $mysql::params::mycnf_owner, $mycnf_group = $mysql::params::mycnf_group, - $managed_dirs = undef, $root_password = $mysql::params::root_password, $service_enabled = $mysql::params::server_service_enabled, $service_manage = $mysql::params::server_service_manage, From 8974f16061106dee47b3e60391918e2be4f7790b Mon Sep 17 00:00:00 2001 From: Eugeny Kisel <ekisel@objectstyle.com> Date: Mon, 1 Jun 2020 11:57:49 +0300 Subject: [PATCH 3/5] Added a default case for the case statement of managing dirs for Debian in mysql::server::config --- manifests/server/config.pp | 1 + 1 file changed, 1 insertion(+) diff --git a/manifests/server/config.pp b/manifests/server/config.pp index 94d508ed1..ccb57b261 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -55,6 +55,7 @@ } } } + default: {} } if $mysql::server::manage_config_file { From a22132740b0da0b24eabf70a46dc0db508a849b2 Mon Sep 17 00:00:00 2001 From: Eugeny Kisel <ekisel@objectstyle.com> Date: Wed, 3 Jun 2020 14:34:00 +0300 Subject: [PATCH 4/5] Fixed a default value for the parameter $managed_dirs from undef to $mysql::params::managed_dirs. Updated REFERENCE.md --- REFERENCE.md | 2 +- manifests/server.pp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index b4e81559e..6144afa7d 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -462,7 +462,7 @@ Data type: `Any` Manage MySQL system directories which described in the section `[mysqld]` of the configuration file `my.cnf` -Default value: `undef` +Default value: `$mysql::params::managed_dirs` ##### `options` diff --git a/manifests/server.pp b/manifests/server.pp index 31f82bfa6..1ac2843a7 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -88,7 +88,7 @@ $remove_default_accounts = false, $restart = $mysql::params::restart, $root_group = $mysql::params::root_group, - $managed_dirs = undef, + $managed_dirs = $mysql::params::managed_dirs, $mysql_group = $mysql::params::mysql_group, $mycnf_owner = $mysql::params::mycnf_owner, $mycnf_group = $mysql::params::mycnf_group, From 518996e0eee7765bc7e4ce07f823b474549c5c4d Mon Sep 17 00:00:00 2001 From: sheena <sheena@puppet.com> Date: Thu, 18 Jun 2020 11:07:50 +0100 Subject: [PATCH 5/5] (maint) Add tests to verify mariadb --- spec/acceptance/mysql_mariadb_spec.rb | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 spec/acceptance/mysql_mariadb_spec.rb diff --git a/spec/acceptance/mysql_mariadb_spec.rb b/spec/acceptance/mysql_mariadb_spec.rb new file mode 100644 index 000000000..f70a5bad4 --- /dev/null +++ b/spec/acceptance/mysql_mariadb_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper_acceptance' + +describe 'mysql server class', if: ((os[:family] == 'debian' && os[:release].to_i > 8) || (os[:family] == 'redhat' && os[:release].to_i > 6)) do + describe 'mariadb' do + let(:pp) do + <<-MANIFEST + $osname = $facts['os']['name'].downcase + yumrepo {'mariadb': + baseurl => "http://yum.mariadb.org/10.4/$osname${facts['os']['release']['major']}-aarch64/", + gpgkey => 'https://yum.mariadb.org/RPM-GPG-KEY-MariaDB', + descr => "MariaDB 10.4", + enabled => 1, + gpgcheck => 1, + }-> + class { '::mysql::server': + require => Yumrepo['mariadb'], + package_name => 'mariadb-server', + service_name => 'mariadb', + root_password => 'strongpassword', + remove_default_accounts => true, + managed_dirs => ['/var/log','/var/run/mysql'], + override_options => { + mysqld => { + log-error => '/var/log/mariadb.log', + pid-file => '/var/run/mysql/mysqld.pid', + }, + mysqld_safe => { + log-error => '/var/log/mariadb.log', + }, + }, + } + MANIFEST + end + + it 'apply manifest' do + apply_manifest(pp) + end + it 'mariadb connection' do + result = run_shell('mysql --user="root" --password="strongpassword" -e "status"') + expect(result.stdout).to match(%r{MariaDB}) + expect(result.stderr).to be_empty + end + end +end