Skip to content

Commit 063d724

Browse files
committed
Merge pull request puppetlabs#90 from emonty/master
Add a bunch of new parameters
2 parents 9c10b3a + bdf181a commit 063d724

File tree

9 files changed

+388
-74
lines changed

9 files changed

+388
-74
lines changed

Modulefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ license 'Apache 2.0'
66
summary 'Mysql module'
77
description 'Mysql module'
88
project_page 'http://github.com/puppetlabs/puppetlabs-mysql'
9+
10+
dependency 'openstackci/apparmor', '>= 0.0.1'

lib/puppet/provider/database/mysql.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,40 @@
77
optional_commands :mysql => 'mysql'
88
optional_commands :mysqladmin => 'mysqladmin'
99

10+
def defaults_file
11+
case Facter.value(:operatingsystem)
12+
when "Debian", "Ubuntu"
13+
return "--defaults-file=/etc/mysql/debian.cnf"
14+
else
15+
return ""
16+
end
17+
end
18+
1019
def self.instances
11-
mysql('-NBe', "show databases").split("\n").collect do |name|
20+
mysql(defaults_file, '-NBe', "show databases").split("\n").collect do |name|
1221
new(:name => name)
1322
end
1423
end
1524

1625
def create
17-
mysql('-NBe', "create database `#{@resource[:name]}` character set #{resource[:charset]}")
26+
mysql(defaults_file, '-NBe', "create database `#{@resource[:name]}` character set #{resource[:charset]}")
1827
end
1928

2029
def destroy
21-
mysqladmin('-f', 'drop', @resource[:name])
30+
mysqladmin(defaults_file, '-f', 'drop', @resource[:name])
2231
end
2332

2433
def charset
25-
mysql('-NBe', "show create database `#{resource[:name]}`").match(/.*?(\S+)\s\*\//)[1]
34+
mysql(defaults_file, '-NBe', "show create database `#{resource[:name]}`").match(/.*?(\S+)\s\*\//)[1]
2635
end
2736

2837
def charset=(value)
29-
mysql('-NBe', "alter database `#{resource[:name]}` CHARACTER SET #{value}")
38+
mysql(defaults_file, '-NBe', "alter database `#{resource[:name]}` CHARACTER SET #{value}")
3039
end
3140

3241
def exists?
3342
begin
34-
mysql('-NBe', "show databases").match(/^#{@resource[:name]}$/)
43+
mysql(defaults_file, '-NBe', "show databases").match(/^#{@resource[:name]}$/)
3544
rescue => e
3645
debug(e.message)
3746
return nil

lib/puppet/provider/database_grant/mysql.rb

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
optional_commands :mysql => 'mysql'
1313
optional_commands :mysqladmin => 'mysqladmin'
1414

15+
def defaults_file
16+
case Facter.value(:operatingsystem)
17+
when "Debian", "Ubuntu"
18+
return "--defaults-file=/etc/mysql/debian.cnf"
19+
else
20+
return ""
21+
end
22+
end
23+
1524
def self.prefetch(resources)
1625
@user_privs = query_user_privs
1726
@db_privs = query_db_privs
@@ -34,19 +43,19 @@ def db_privs
3443
end
3544

3645
def self.query_user_privs
37-
results = mysql("mysql", "-Be", "describe user")
46+
results = mysql(defaults_file, "-Be", "describe user")
3847
column_names = results.split(/\n/).map { |l| l.chomp.split(/\t/)[0] }
3948
@user_privs = column_names.delete_if { |e| !( e =~/_priv$/) }
4049
end
4150

4251
def self.query_db_privs
43-
results = mysql("mysql", "-Be", "describe db")
52+
results = mysql(defaults_file, "-Be", "describe db")
4453
column_names = results.split(/\n/).map { |l| l.chomp.split(/\t/)[0] }
4554
@db_privs = column_names.delete_if { |e| !(e =~/_priv$/) }
4655
end
4756

4857
def mysql_flush
49-
mysqladmin "flush-privileges"
58+
mysqladmin defaults_file, "flush-privileges"
5059
end
5160

5261
# this parses the
@@ -74,11 +83,11 @@ def create_row
7483
name = split_name(@resource[:name])
7584
case name[:type]
7685
when :user
77-
mysql "mysql", "-e", "INSERT INTO user (host, user) VALUES ('%s', '%s')" % [
86+
mysql defaults_file, "-e", "INSERT INTO user (host, user) VALUES ('%s', '%s')" % [
7887
name[:host], name[:user],
7988
]
8089
when :db
81-
mysql "mysql", "-e", "INSERT INTO db (host, user, db) VALUES ('%s', '%s', '%s')" % [
90+
mysql defaults_file, "-e", "INSERT INTO db (host, user, db) VALUES ('%s', '%s', '%s')" % [
8291
name[:host], name[:user], name[:db],
8392
]
8493
end
@@ -87,7 +96,7 @@ def create_row
8796
end
8897

8998
def destroy
90-
mysql "mysql", "-e", "REVOKE ALL ON '%s'.* FROM '%s@%s'" % [ @resource[:privileges], @resource[:database], @resource[:name], @resource[:host] ]
99+
mysql defaults_file, "-e", "REVOKE ALL ON '%s'.* FROM '%s@%s'" % [ @resource[:privileges], @resource[:database], @resource[:name], @resource[:host] ]
91100
end
92101

93102
def row_exists?
@@ -96,7 +105,7 @@ def row_exists?
96105
if name[:type] == :db
97106
fields << :db
98107
end
99-
not mysql( "mysql", "-NBe", 'SELECT "1" FROM %s WHERE %s' % [ name[:type], fields.map do |f| "%s = '%s'" % [f, name[f]] end.join(' AND ')]).empty?
108+
not mysql( defaults_file, "-NBe", 'SELECT "1" FROM %s WHERE %s' % [ name[:type], fields.map do |f| "%s = '%s'" % [f, name[f]] end.join(' AND ')]).empty?
100109
end
101110

102111
def all_privs_set?
@@ -118,9 +127,9 @@ def privileges
118127

119128
case name[:type]
120129
when :user
121-
privs = mysql "mysql", "-Be", 'select * from user where user="%s" and host="%s"' % [ name[:user], name[:host] ]
130+
privs = mysql defaults_file, "-Be", 'select * from user where user="%s" and host="%s"' % [ name[:user], name[:host] ]
122131
when :db
123-
privs = mysql "mysql", "-Be", 'select * from db where user="%s" and host="%s" and db="%s"' % [ name[:user], name[:host], name[:db] ]
132+
privs = mysql defaults_file, "-Be", 'select * from db where user="%s" and host="%s" and db="%s"' % [ name[:user], name[:host], name[:db] ]
124133
end
125134

126135
if privs.match(/^$/)
@@ -171,7 +180,7 @@ def privileges=(privs)
171180
# puts "set:", set
172181
stmt = stmt << set << where
173182

174-
mysql "mysql", "-Be", stmt
183+
mysql defaults_file, "-Be", stmt
175184
mysql_flush
176185
end
177186
end

lib/puppet/provider/database_user/mysql.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,45 @@
77
optional_commands :mysql => 'mysql'
88
optional_commands :mysqladmin => 'mysqladmin'
99

10+
def defaults_file
11+
case Facter.value(:operatingsystem)
12+
when "Debian", "Ubuntu"
13+
return "--defaults-file=/etc/mysql/debian.cnf"
14+
else
15+
return ""
16+
end
17+
end
18+
1019
def self.instances
11-
users = mysql("mysql", '-BNe' "select concat(User, '@',Host) as User from mysql.user").split("\n")
20+
users = mysql(defaults_file, '-BNe' "select concat(User, '@',Host) as User from mysql.user").split("\n")
1221
users.select{ |user| user =~ /.+@/ }.collect do |name|
1322
new(:name => name)
1423
end
1524
end
1625

1726
def create
18-
mysql("mysql", "-e", "create user '%s' identified by PASSWORD '%s'" % [ @resource[:name].sub("@", "'@'"), @resource.value(:password_hash) ])
27+
mysql(defaults_file, "-e", "create user '%s' identified by PASSWORD '%s'" % [ @resource[:name].sub("@", "'@'"), @resource.value(:password_hash) ])
1928
end
2029

2130
def destroy
22-
mysql("mysql", "-e", "drop user '%s'" % @resource.value(:name).sub("@", "'@'") )
31+
mysql(defaults_file, "-e", "drop user '%s'" % @resource.value(:name).sub("@", "'@'") )
2332
end
2433

2534
def password_hash
26-
mysql("mysql", "-NBe", "select password from user where CONCAT(user, '@', host) = '%s'" % @resource.value(:name)).chomp
35+
mysql(defaults_file, "-NBe", "select password from user where CONCAT(user, '@', host) = '%s'" % @resource.value(:name)).chomp
2736
end
2837

2938
def password_hash=(string)
30-
mysql("mysql", "-e", "SET PASSWORD FOR '%s' = '%s'" % [ @resource[:name].sub("@", "'@'"), string ] )
39+
mysql(defaults_file, "-e", "SET PASSWORD FOR '%s' = '%s'" % [ @resource[:name].sub("@", "'@'"), string ] )
3140
end
3241

3342
def exists?
34-
not mysql("mysql", "-NBe", "select '1' from user where CONCAT(user, '@', host) = '%s'" % @resource.value(:name)).empty?
43+
not mysql(defaults_file, "-NBe", "select '1' from user where CONCAT(user, '@', host) = '%s'" % @resource.value(:name)).empty?
3544
end
3645

3746
def flush
3847
@property_hash.clear
39-
mysqladmin "flush-privileges"
48+
mysqladmin(defaults_file, "flush-privileges")
4049
end
4150

4251
end

manifests/config.pp

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,70 @@
3030
# }
3131
#
3232
class mysql::config(
33-
$root_password = 'UNSET',
34-
$old_root_password = '',
35-
$bind_address = $mysql::params::bind_address,
36-
$port = $mysql::params::port,
37-
$etc_root_password = $mysql::params::etc_root_password,
38-
$service_name = $mysql::params::service_name,
39-
$config_file = $mysql::params::config_file,
40-
$socket = $mysql::params::socket,
41-
$datadir = $mysql::params::datadir,
42-
$ssl = $mysql::params::ssl,
43-
$ssl_ca = $mysql::params::ssl_ca,
44-
$ssl_cert = $mysql::params::ssl_cert,
45-
$ssl_key = $mysql::params::ssl_key,
46-
$log_error = $mysql::params::log_error,
47-
$default_engine = 'UNSET',
48-
$root_group = $mysql::params::root_group
33+
$root_password = 'UNSET',
34+
$old_root_password = '',
35+
$bind_address = $mysql::params::bind_address,
36+
$port = $mysql::params::port,
37+
$etc_root_password = $mysql::params::etc_root_password,
38+
$service_name = $mysql::params::service_name,
39+
$config_file = $mysql::params::config_file,
40+
$socket = $mysql::params::socket,
41+
$datadir = $mysql::params::datadir,
42+
$ssl = $mysql::params::ssl,
43+
$ssl_ca = $mysql::params::ssl_ca,
44+
$ssl_cert = $mysql::params::ssl_cert,
45+
$ssl_key = $mysql::params::ssl_key,
46+
$log_error = $mysql::params::log_error,
47+
$slow_query_log_file = $mysql::params::slow_query_log_file,
48+
$long_query_time = $mysql::params::long_query_time,
49+
$character_set_server = $mysql::params::character_set_server,
50+
$collation_server = $mysql::params::collation_server,
51+
$tmp_table_size = $mysql::params::tmp_table_size,
52+
$max_heap_table_size = $mysql::params::max_heap_table_size,
53+
$max_tmp_tables = $mysql::params::max_tmp_tables,
54+
$join_buffer_size = $mysql::params::join_buffer_size,
55+
$read_buffer_size = $mysql::params::read_buffer_size,
56+
$sort_buffer_size = $mysql::params::sort_buffer_size,
57+
$table_cache = $mysql::params::table_cache,
58+
$table_definition_cache = $mysql::params::table_definition_cache,
59+
$open_files_limit = $mysql::params::open_files_limit,
60+
$thread_stack = $mysql::params::thread_stack,
61+
$thread_cache_size = $mysql::params::thread_cache_size,
62+
$thread_concurrency = $mysql::params::thread_concurrency,
63+
$query_cache_size = $mysql::params::query_cache_size,
64+
$query_cache_limit = $mysql::params::query_cache_limit,
65+
$tmp_table_size = $mysql::params::tmp_table_size,
66+
$read_rnd_buffer_size = $mysql::params::read_rnd_buffer_size,
67+
$max_allowed_packet = $mysql::params::max_allowed_packet,
68+
$max_connections = $mysql::params::max_connections,
69+
$wait_timeout = $mysql::params::wait_timeout,
70+
$connect_timeout = $mysql::params::connect_timeout,
71+
$innodb_file_per_table = $mysql::params::innodb_file_per_table,
72+
$innodb_status_file = $mysql::params::innodb_status_file,
73+
$innodb_support_xa = $mysql::params::innodb_support_xa,
74+
$read_only = $mysql::params::read_only,
75+
$replication_enabled = $mysql::params::replication_enabled,
76+
$expire_logs_days = $mysql::params::expire_logs_days,
77+
$max_binlog_size = $mysql::params::max_binlog_size,
78+
$replicate_ignore_table = $mysql::params::replicate_ignore_table,
79+
$replicate_ignore_db = $mysql::params::replicate_ignore_db,
80+
$replicate_do_table = $mysql::params::replicate_do_table,
81+
$replicate_do_db = $mysql::params::replicate_do_db,
82+
$extra_configs = $mysql::params::extra_configs,
83+
$default_engine = 'UNSET',
84+
$root_group = $mysql::params::root_group,
85+
86+
$key_buffer_size = $mysql::params::key_buffer_size,
87+
$myisam_sort_buffer_size = $mysql::params::myisam_sort_buffer_size,
88+
$myisam_max_sort_file_size = $mysql::params::myisam_max_sort_file_size,
89+
$myisam_recover = $mysql::params::myisam_recover,
90+
$innodb_flush_log_at_trx_commit = $mysql::params::innodb_flush_log_at_trx_commit,
91+
$innodb_buffer_pool_size = $mysql::params::innodb_buffer_pool_size,
92+
$innodb_log_file_size = $mysql::params::innodb_log_file_size,
93+
$innodb_flush_method = $mysql::params::innodb_flush_method,
94+
$innodb_thread_concurrency = $mysql::params::innodb_thread_concurrency,
95+
$innodb_concurrency_tickets = $mysql::params::innodb_concurrency_tickets,
96+
$innodb_doublewrite = $mysql::params::innodb_doublewrite,
4997
) inherits mysql::params {
5098

5199
File {

manifests/params.pp

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,67 @@
1212
#
1313
class mysql::params {
1414

15-
$bind_address = '127.0.0.1'
16-
$port = 3306
17-
$etc_root_password = false
18-
$ssl = false
15+
$bind_address = '127.0.0.1'
16+
$port = 3306
17+
$etc_root_password = false
18+
$ssl = false
19+
$slow_query_log_file = false
20+
$long_query_time = 10
21+
$character_set_server = 'utf8'
22+
$collation_server = 'utf8_general_ci'
23+
$ft_min_word_len = 3
24+
$tmp_table_size = '16M'
25+
$max_heap_table_size = '16M'
26+
$max_tmp_tables = '32'
27+
$join_buffer_size = '3M'
28+
$read_buffer_size = '4M'
29+
$sort_buffer_size = '4M'
30+
$table_cache = '64'
31+
$table_definition_cache = '256'
32+
$open_files_limit = '1024'
33+
$thread_stack = '192K'
34+
$thread_cache_size = '8'
35+
$thread_concurrency = '10'
36+
$query_cache_size = '16M'
37+
$query_cache_limit = '1M'
38+
$tmp_table_size = '16M'
39+
$read_rnd_buffer_size = '256K'
40+
$key_buffer_size = '16M'
41+
$myisam_sort_buffer_size = '8M'
42+
$myisam_max_sort_file_size = '512M'
43+
$myisam_recover = 'BACKUP'
44+
$max_allowed_packet = "16M"
45+
$max_connections = '151'
46+
$wait_timeout = "28800"
47+
$connect_timeout = "10"
48+
$innodb_file_per_table = '1'
49+
$innodb_status_file = '0'
50+
$innodb_support_xa = '0'
51+
$innodb_flush_log_at_trx_commit = '0'
52+
$innodb_buffer_pool_size = '8M'
53+
$innodb_log_file_size = '5M'
54+
$innodb_flush_method = 'O_DIRECT'
55+
$innodb_thread_concurrency = '8'
56+
$innodb_concurrency_tickets = '500'
57+
$innodb_doublewrite = '1'
58+
$read_only = false
59+
$replication_enabled = false
60+
$expire_logs_days = '10'
61+
$max_binlog_size = '100M'
62+
$replicate_ignore_table = []
63+
$replicate_ignore_db = []
64+
$replicate_do_table = []
65+
$replicate_do_db = []
66+
$extra_configs = {}
1967

2068
case $::operatingsystem {
2169
"Ubuntu": {
2270
$service_provider = upstart
71+
$apparmor_file = 'mysql/templates/apparmor.usr.sbin.mysqld.erb'
2372
}
2473
default: {
2574
$service_provider = undef
75+
$apparmor_file = undef
2676
}
2777
}
2878

manifests/server.pp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
$package_ensure = 'present',
2020
$service_name = $mysql::params::service_name,
2121
$service_provider = $mysql::params::service_provider,
22+
$use_apparmor = false,
23+
$apparmor_file = $mysql::params::apparmor_file,
2224
$config_hash = {},
2325
$enabled = true
2426
) inherits mysql::params {
@@ -49,4 +51,16 @@
4951
provider => $service_provider,
5052
}
5153

54+
if $use_apparmor {
55+
include apparmor
56+
57+
file { "/etc/apparmor.d/usr.sbin.mysqld":
58+
owner => 'root',
59+
group => 'root',
60+
mode => 0644,
61+
content => template($apparmor_file),
62+
require => Package['mysql-server'],
63+
notify => Class['apparmor'],
64+
}
65+
}
5266
}

0 commit comments

Comments
 (0)