diff --git a/REFERENCE.md b/REFERENCE.md index 0e3a8c66e..6144afa7d 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: `$mysql::params::managed_dirs` + ##### `options` Data type: `Mysql::Options` diff --git a/manifests/server.pp b/manifests/server.pp index 8c8a30f1c..1ac2843a7 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -88,6 +88,7 @@ $remove_default_accounts = false, $restart = $mysql::params::restart, $root_group = $mysql::params::root_group, + $managed_dirs = $mysql::params::managed_dirs, $mysql_group = $mysql::params::mysql_group, $mycnf_owner = $mysql::params::mycnf_owner, $mycnf_group = $mysql::params::mycnf_group, diff --git a/manifests/server/config.pp b/manifests/server/config.pp index 3082cd4ff..ccb57b261 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -36,21 +36,26 @@ } #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, + } + } } } } + default: {} } if $mysql::server::manage_config_file { 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