Skip to content

Commit 84069b0

Browse files
author
carabasdaniel
authored
Merge pull request #1194 from elfranne/debian-dirs
Fix binarylog by allowing users to specify managed directories
2 parents 312aca8 + 1226228 commit 84069b0

File tree

5 files changed

+77
-28
lines changed

5 files changed

+77
-28
lines changed

manifests/params.pp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
$ssl_cert = '/etc/mysql/server-cert.pem'
104104
$ssl_key = '/etc/mysql/server-key.pem'
105105
$tmpdir = '/tmp'
106+
$managed_dirs = undef
106107
# mysql::bindings
107108
$perl_package_name = 'perl-DBD-MySQL'
108109
$php_package_name = 'php-mysql'
@@ -172,6 +173,7 @@
172173
$ssl_cert = '/etc/mysql/server-cert.pem'
173174
$ssl_key = '/etc/mysql/server-key.pem'
174175
$tmpdir = '/tmp'
176+
$managed_dirs = undef
175177
# mysql::bindings
176178
$java_package_name = 'mysql-connector-java'
177179
$perl_package_name = 'perl-DBD-mysql'
@@ -220,6 +222,8 @@
220222
$ssl_cert = '/etc/mysql/server-cert.pem'
221223
$ssl_key = '/etc/mysql/server-key.pem'
222224
$tmpdir = '/tmp'
225+
$managed_dirs = ['tmpdir','basedir','datadir','innodb_data_home_dir','innodb_log_group_home_dir','innodb_undo_directory','innodb_tmpdir']
226+
223227
# mysql::bindings
224228
if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '10') >= 0 {
225229
$java_package_name = 'libmariadb-java'
@@ -267,6 +271,7 @@
267271
$ssl_cert = '/etc/mysql/server-cert.pem'
268272
$ssl_key = '/etc/mysql/server-key.pem'
269273
$tmpdir = '/tmp'
274+
$managed_dirs = undef
270275
# mysql::bindings
271276
$java_package_name = 'mysql-connector-java'
272277
$perl_package_name = 'perl-dbd-mysql'
@@ -294,6 +299,7 @@
294299
$ssl_cert = '/etc/mysql/server-cert.pem'
295300
$ssl_key = '/etc/mysql/server-key.pem'
296301
$tmpdir = '/tmp'
302+
$managed_dirs = undef
297303
# mysql::bindings
298304
$java_package_name = 'dev-java/jdbc-mysql'
299305
$perl_package_name = 'dev-perl/DBD-mysql'
@@ -321,6 +327,7 @@
321327
$ssl_cert = undef
322328
$ssl_key = undef
323329
$tmpdir = '/tmp'
330+
$managed_dirs = undef
324331
# mysql::bindings
325332
$java_package_name = 'databases/mysql-connector-java'
326333
$perl_package_name = 'p5-DBD-mysql'
@@ -351,6 +358,7 @@
351358
$ssl_cert = undef
352359
$ssl_key = undef
353360
$tmpdir = '/tmp'
361+
$managed_dirs = undef
354362
# mysql::bindings
355363
$java_package_name = undef
356364
$perl_package_name = 'p5-DBD-mysql'
@@ -377,6 +385,7 @@
377385
$ssl_cert = undef
378386
$ssl_key = undef
379387
$tmpdir = '/tmp'
388+
$managed_dirs = undef
380389
# mysql::bindings
381390
$java_package_name = undef
382391
$perl_package_name = undef
@@ -408,6 +417,7 @@
408417
$ssl_cert = '/etc/mysql/server-cert.pem'
409418
$ssl_key = '/etc/mysql/server-key.pem'
410419
$tmpdir = '/tmp'
420+
$managed_dirs = undef
411421
$java_package_name = undef
412422
$perl_package_name = 'perl-dbd-mysql'
413423
$php_package_name = 'php7-mysqlnd'
@@ -435,6 +445,7 @@
435445
$ssl_cert = '/etc/mysql/server-cert.pem'
436446
$ssl_key = '/etc/mysql/server-key.pem'
437447
$tmpdir = '/tmp'
448+
$managed_dirs = undef
438449
# mysql::bindings
439450
$java_package_name = 'mysql-connector-java'
440451
$perl_package_name = 'perl-DBD-MySQL'

manifests/server.pp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141

142142
include '::mysql::server::config'
143143
include '::mysql::server::install'
144-
include '::mysql::server::binarylog'
144+
include '::mysql::server::managed_dirs'
145145
include '::mysql::server::installdb'
146146
include '::mysql::server::service'
147147
include '::mysql::server::root_password'
@@ -164,7 +164,7 @@
164164
Anchor['mysql::server::start']
165165
-> Class['mysql::server::config']
166166
-> Class['mysql::server::install']
167-
-> Class['mysql::server::binarylog']
167+
-> Class['mysql::server::managed_dirs']
168168
-> Class['mysql::server::installdb']
169169
-> Class['mysql::server::service']
170170
-> Class['mysql::server::root_password']

manifests/server/binarylog.pp

Lines changed: 0 additions & 26 deletions
This file was deleted.

manifests/server/config.pp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
$options = $mysql::server::_options
99
$includedir = $mysql::server::includedir
10+
$managed_dirs = $mysql::server::managed_dirs
11+
1012

1113
File {
1214
owner => 'root',
@@ -33,6 +35,24 @@
3335
}
3436
}
3537

38+
#Debian: Creating world readable directories before installing.
39+
if $managed_dirs {
40+
$managed_dirs.each | $entry | {
41+
$dir = $options['mysqld']["${entry}"]
42+
if ( $dir and $dir != '/usr' and $dir != '/tmp' ) {
43+
exec {"${entry}-managed_dir-mkdir":
44+
command => "/bin/mkdir -p ${dir}",
45+
unless => "/usr/bin/dpkg -s ${mysql::server::package_name}",
46+
notify => Exec["${entry}-managed_dir-chmod"],
47+
}
48+
exec {"${entry}-managed_dir-chmod":
49+
command => "/bin/chmod 777 ${dir}",
50+
refreshonly => true,
51+
}
52+
}
53+
}
54+
}
55+
3656
if $mysql::server::manage_config_file {
3757
file { 'mysql-config-file':
3858
path => $mysql::server::config_file,

manifests/server/managed_dirs.pp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# @summary
2+
# Binary log configuration requires the mysql user to be present. This must be done after package install
3+
#
4+
# @api private
5+
#
6+
class mysql::server::managed_dirs {
7+
8+
$options = $mysql::server::_options
9+
$includedir = $mysql::server::includedir
10+
$managed_dirs = $mysql::server::managed_dirs
11+
12+
#Debian: Fix permission on directories
13+
if $managed_dirs {
14+
$managed_dirs_path = $managed_dirs.map |$path| { $options['mysqld']["${path}"] }
15+
$managed_dirs.each | $entry | {
16+
$dir = $options['mysqld']["${entry}"]
17+
if ( $dir and $dir != '/usr' and $dir != '/tmp' ) {
18+
file {"${entry}-managed_dir":
19+
ensure => directory,
20+
path => $dir,
21+
mode => '0700',
22+
owner => $options['mysqld']['user'],
23+
group => $options['mysqld']['user'],
24+
}
25+
}
26+
}
27+
}
28+
29+
$logbin = pick($options['mysqld']['log-bin'], $options['mysqld']['log_bin'], false)
30+
31+
if $logbin {
32+
$logbindir = dirname($logbin)
33+
34+
#Stop puppet from managing directory if just a filename/prefix is specified or is not already managed
35+
if ($logbindir != '.' and !($logbindir in $managed_dirs_path)) {
36+
file { $logbindir:
37+
ensure => directory,
38+
mode => '0700',
39+
owner => $options['mysqld']['user'],
40+
group => $options['mysqld']['user'],
41+
}
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)