|
1 # Private class: See README.md. |
|
2 class mysql::params { |
|
3 |
|
4 $manage_config_file = true |
|
5 $purge_conf_dir = false |
|
6 $restart = false |
|
7 $root_password = 'UNSET' |
|
8 $install_secret_file = '/.mysql_secret' |
|
9 $server_package_ensure = 'present' |
|
10 $server_package_manage = true |
|
11 $server_service_manage = true |
|
12 $server_service_enabled = true |
|
13 $client_package_ensure = 'present' |
|
14 $client_package_manage = true |
|
15 $create_root_user = true |
|
16 $create_root_my_cnf = true |
|
17 # mysql::bindings |
|
18 $bindings_enable = false |
|
19 $java_package_ensure = 'present' |
|
20 $java_package_provider = undef |
|
21 $perl_package_ensure = 'present' |
|
22 $perl_package_provider = undef |
|
23 $php_package_ensure = 'present' |
|
24 $php_package_provider = undef |
|
25 $python_package_ensure = 'present' |
|
26 $python_package_provider = undef |
|
27 $ruby_package_ensure = 'present' |
|
28 $ruby_package_provider = undef |
|
29 $client_dev_package_ensure = 'present' |
|
30 $client_dev_package_provider = undef |
|
31 $daemon_dev_package_ensure = 'present' |
|
32 $daemon_dev_package_provider = undef |
|
33 |
|
34 |
|
35 case $::osfamily { |
|
36 'RedHat': { |
|
37 case $::operatingsystem { |
|
38 'Fedora': { |
|
39 if versioncmp($::operatingsystemrelease, '19') >= 0 or $::operatingsystemrelease == 'Rawhide' { |
|
40 $provider = 'mariadb' |
|
41 } else { |
|
42 $provider = 'mysql' |
|
43 } |
|
44 } |
|
45 /^(RedHat|CentOS|Scientific|OracleLinux)$/: { |
|
46 if versioncmp($::operatingsystemmajrelease, '7') >= 0 { |
|
47 $provider = 'mariadb' |
|
48 } else { |
|
49 $provider = 'mysql' |
|
50 } |
|
51 } |
|
52 default: { |
|
53 $provider = 'mysql' |
|
54 } |
|
55 } |
|
56 |
|
57 if $provider == 'mariadb' { |
|
58 $client_package_name = 'mariadb' |
|
59 $server_package_name = 'mariadb-server' |
|
60 $server_service_name = 'mariadb' |
|
61 $log_error = '/var/log/mariadb/mariadb.log' |
|
62 $config_file = '/etc/my.cnf.d/server.cnf' |
|
63 # mariadb package by default has !includedir set in my.cnf to /etc/my.cnf.d |
|
64 $includedir = undef |
|
65 $pidfile = '/var/run/mariadb/mariadb.pid' |
|
66 } else { |
|
67 $client_package_name = 'mysql' |
|
68 $server_package_name = 'mysql-server' |
|
69 $server_service_name = 'mysqld' |
|
70 $log_error = '/var/log/mysqld.log' |
|
71 $config_file = '/etc/my.cnf' |
|
72 $includedir = '/etc/my.cnf.d' |
|
73 $pidfile = '/var/run/mysqld/mysqld.pid' |
|
74 } |
|
75 |
|
76 $basedir = '/usr' |
|
77 $datadir = '/var/lib/mysql' |
|
78 $root_group = 'root' |
|
79 $mysql_group = 'mysql' |
|
80 $socket = '/var/lib/mysql/mysql.sock' |
|
81 $ssl_ca = '/etc/mysql/cacert.pem' |
|
82 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
83 $ssl_key = '/etc/mysql/server-key.pem' |
|
84 $tmpdir = '/tmp' |
|
85 # mysql::bindings |
|
86 $java_package_name = 'mysql-connector-java' |
|
87 $perl_package_name = 'perl-DBD-MySQL' |
|
88 $php_package_name = 'php-mysql' |
|
89 $python_package_name = 'MySQL-python' |
|
90 $ruby_package_name = 'ruby-mysql' |
|
91 $client_dev_package_name = undef |
|
92 $daemon_dev_package_name = 'mysql-devel' |
|
93 } |
|
94 |
|
95 'Suse': { |
|
96 case $::operatingsystem { |
|
97 'OpenSuSE': { |
|
98 $client_package_name = 'mysql-community-server-client' |
|
99 $server_package_name = 'mysql-community-server' |
|
100 $basedir = '/usr' |
|
101 } |
|
102 'SLES','SLED': { |
|
103 if versioncmp($::operatingsystemrelease, '12') >= 0 { |
|
104 $client_package_name = 'mariadb-client' |
|
105 $server_package_name = 'mariadb' |
|
106 $basedir = undef |
|
107 } else { |
|
108 $client_package_name = 'mysql-client' |
|
109 $server_package_name = 'mysql' |
|
110 $basedir = '/usr' |
|
111 } |
|
112 } |
|
113 default: { |
|
114 fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::operatingsystem}") |
|
115 } |
|
116 } |
|
117 $config_file = '/etc/my.cnf' |
|
118 $includedir = '/etc/my.cnf.d' |
|
119 $datadir = '/var/lib/mysql' |
|
120 $log_error = $::operatingsystem ? { |
|
121 /OpenSuSE/ => '/var/log/mysql/mysqld.log', |
|
122 /(SLES|SLED)/ => '/var/log/mysqld.log', |
|
123 } |
|
124 $pidfile = $::operatingsystem ? { |
|
125 /OpenSuSE/ => '/var/run/mysql/mysqld.pid', |
|
126 /(SLES|SLED)/ => '/var/lib/mysql/mysqld.pid', |
|
127 } |
|
128 $root_group = 'root' |
|
129 $mysql_group = 'mysql' |
|
130 $server_service_name = 'mysql' |
|
131 $socket = $::operatingsystem ? { |
|
132 /OpenSuSE/ => '/var/run/mysql/mysql.sock', |
|
133 /(SLES|SLED)/ => '/var/lib/mysql/mysql.sock', |
|
134 } |
|
135 $ssl_ca = '/etc/mysql/cacert.pem' |
|
136 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
137 $ssl_key = '/etc/mysql/server-key.pem' |
|
138 $tmpdir = '/tmp' |
|
139 # mysql::bindings |
|
140 $java_package_name = 'mysql-connector-java' |
|
141 $perl_package_name = 'perl-DBD-mysql' |
|
142 $php_package_name = 'apache2-mod_php53' |
|
143 $python_package_name = 'python-mysql' |
|
144 $ruby_package_name = $::operatingsystem ? { |
|
145 /OpenSuSE/ => 'rubygem-mysql', |
|
146 /(SLES|SLED)/ => 'ruby-mysql', |
|
147 } |
|
148 $client_dev_package_name = 'libmysqlclient-devel' |
|
149 $daemon_dev_package_name = 'mysql-devel' |
|
150 } |
|
151 |
|
152 'Debian': { |
|
153 $client_package_name = 'mysql-client' |
|
154 $server_package_name = 'mysql-server' |
|
155 |
|
156 $basedir = '/usr' |
|
157 $config_file = '/etc/mysql/my.cnf' |
|
158 $includedir = '/etc/mysql/conf.d' |
|
159 $datadir = '/var/lib/mysql' |
|
160 $log_error = '/var/log/mysql/error.log' |
|
161 $pidfile = '/var/run/mysqld/mysqld.pid' |
|
162 $root_group = 'root' |
|
163 $mysql_group = 'mysql' |
|
164 $server_service_name = 'mysql' |
|
165 $socket = '/var/run/mysqld/mysqld.sock' |
|
166 $ssl_ca = '/etc/mysql/cacert.pem' |
|
167 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
168 $ssl_key = '/etc/mysql/server-key.pem' |
|
169 $tmpdir = '/tmp' |
|
170 # mysql::bindings |
|
171 $java_package_name = 'libmysql-java' |
|
172 $perl_package_name = 'libdbd-mysql-perl' |
|
173 $php_package_name = 'php5-mysql' |
|
174 $python_package_name = 'python-mysqldb' |
|
175 $ruby_package_name = $::lsbdistcodename ? { |
|
176 'trusty' => 'ruby-mysql', |
|
177 'jessie' => 'ruby-mysql', |
|
178 default => 'libmysql-ruby', |
|
179 } |
|
180 $client_dev_package_name = 'libmysqlclient-dev' |
|
181 $daemon_dev_package_name = 'libmysqld-dev' |
|
182 } |
|
183 |
|
184 'Archlinux': { |
|
185 $client_package_name = 'mariadb-clients' |
|
186 $server_package_name = 'mariadb' |
|
187 $basedir = '/usr' |
|
188 $config_file = '/etc/mysql/my.cnf' |
|
189 $datadir = '/var/lib/mysql' |
|
190 $log_error = '/var/log/mysqld.log' |
|
191 $pidfile = '/var/run/mysqld/mysqld.pid' |
|
192 $root_group = 'root' |
|
193 $mysql_group = 'mysql' |
|
194 $server_service_name = 'mysqld' |
|
195 $socket = '/var/lib/mysql/mysql.sock' |
|
196 $ssl_ca = '/etc/mysql/cacert.pem' |
|
197 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
198 $ssl_key = '/etc/mysql/server-key.pem' |
|
199 $tmpdir = '/tmp' |
|
200 # mysql::bindings |
|
201 $java_package_name = 'mysql-connector-java' |
|
202 $perl_package_name = 'perl-dbd-mysql' |
|
203 $php_package_name = undef |
|
204 $python_package_name = 'mysql-python' |
|
205 $ruby_package_name = 'mysql-ruby' |
|
206 } |
|
207 |
|
208 'Gentoo': { |
|
209 $client_package_name = 'virtual/mysql' |
|
210 $server_package_name = 'virtual/mysql' |
|
211 $basedir = '/usr' |
|
212 $config_file = '/etc/mysql/my.cnf' |
|
213 $datadir = '/var/lib/mysql' |
|
214 $log_error = '/var/log/mysql/mysqld.err' |
|
215 $pidfile = '/run/mysqld/mysqld.pid' |
|
216 $root_group = 'root' |
|
217 $mysql_group = 'mysql' |
|
218 $server_service_name = 'mysql' |
|
219 $socket = '/run/mysqld/mysqld.sock' |
|
220 $ssl_ca = '/etc/mysql/cacert.pem' |
|
221 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
222 $ssl_key = '/etc/mysql/server-key.pem' |
|
223 $tmpdir = '/tmp' |
|
224 # mysql::bindings |
|
225 $java_package_name = 'dev-java/jdbc-mysql' |
|
226 $perl_package_name = 'dev-perl/DBD-mysql' |
|
227 $php_package_name = undef |
|
228 $python_package_name = 'dev-python/mysql-python' |
|
229 $ruby_package_name = 'dev-ruby/mysql-ruby' |
|
230 } |
|
231 |
|
232 'FreeBSD': { |
|
233 $client_package_name = 'databases/mysql56-client' |
|
234 $server_package_name = 'databases/mysql56-server' |
|
235 $basedir = '/usr/local' |
|
236 $config_file = '/usr/local/etc/my.cnf' |
|
237 $includedir = '/usr/local/etc/my.cnf.d' |
|
238 $datadir = '/var/db/mysql' |
|
239 $log_error = '/var/log/mysqld.log' |
|
240 $pidfile = '/var/run/mysql.pid' |
|
241 $root_group = 'wheel' |
|
242 $mysql_group = 'mysql' |
|
243 $server_service_name = 'mysql-server' |
|
244 $socket = '/var/db/mysql/mysql.sock' |
|
245 $ssl_ca = undef |
|
246 $ssl_cert = undef |
|
247 $ssl_key = undef |
|
248 $tmpdir = '/tmp' |
|
249 # mysql::bindings |
|
250 $java_package_name = 'databases/mysql-connector-java' |
|
251 $perl_package_name = 'p5-DBD-mysql' |
|
252 $php_package_name = 'php5-mysql' |
|
253 $python_package_name = 'databases/py-MySQLdb' |
|
254 $ruby_package_name = 'databases/ruby-mysql' |
|
255 # The libraries installed by these packages are included in client and server packages, no installation required. |
|
256 $client_dev_package_name = undef |
|
257 $daemon_dev_package_name = undef |
|
258 } |
|
259 |
|
260 'OpenBSD': { |
|
261 $client_package_name = 'mariadb-client' |
|
262 $server_package_name = 'mariadb-server' |
|
263 $basedir = '/usr/local' |
|
264 $config_file = '/etc/my.cnf' |
|
265 $includedir = undef |
|
266 $datadir = '/var/mysql' |
|
267 $log_error = "/var/mysql/${::hostname}.err" |
|
268 $pidfile = '/var/mysql/mysql.pid' |
|
269 $root_group = 'wheel' |
|
270 $mysql_group = '_mysql' |
|
271 $server_service_name = 'mysqld' |
|
272 $socket = '/var/run/mysql/mysql.sock' |
|
273 $ssl_ca = undef |
|
274 $ssl_cert = undef |
|
275 $ssl_key = undef |
|
276 $tmpdir = '/tmp' |
|
277 # mysql::bindings |
|
278 $java_package_name = undef |
|
279 $perl_package_name = 'p5-DBD-mysql' |
|
280 $php_package_name = 'php-mysql' |
|
281 $python_package_name = 'py-mysql' |
|
282 $ruby_package_name = 'ruby-mysql' |
|
283 # The libraries installed by these packages are included in client and server packages, no installation required. |
|
284 $client_dev_package_name = undef |
|
285 $daemon_dev_package_name = undef |
|
286 } |
|
287 |
|
288 'Solaris': { |
|
289 $client_package_name = 'database/mysql-55/client' |
|
290 $server_package_name = 'database/mysql-55' |
|
291 $basedir = undef |
|
292 $config_file = '/etc/mysql/5.5/my.cnf' |
|
293 $datadir = '/var/mysql/5.5/data' |
|
294 $log_error = "/var/mysql/5.5/data/${::hostname}.err" |
|
295 $pidfile = "/var/mysql/5.5/data/${::hostname}.pid" |
|
296 $root_group = 'bin' |
|
297 $server_service_name = 'application/database/mysql:version_55' |
|
298 $socket = '/tmp/mysql.sock' |
|
299 $ssl_ca = undef |
|
300 $ssl_cert = undef |
|
301 $ssl_key = undef |
|
302 $tmpdir = '/tmp' |
|
303 # mysql::bindings |
|
304 $java_package_name = undef |
|
305 $perl_package_name = undef |
|
306 $php_package_name = 'web/php-53/extension/php-mysql' |
|
307 $python_package_name = 'library/python/python-mysql' |
|
308 $ruby_package_name = undef |
|
309 # The libraries installed by these packages are included in client and server packages, no installation required. |
|
310 $client_dev_package_name = undef |
|
311 $daemon_dev_package_name = undef |
|
312 } |
|
313 |
|
314 default: { |
|
315 case $::operatingsystem { |
|
316 'Amazon': { |
|
317 $client_package_name = 'mysql' |
|
318 $server_package_name = 'mysql-server' |
|
319 $basedir = '/usr' |
|
320 $config_file = '/etc/my.cnf' |
|
321 $includedir = '/etc/my.cnf.d' |
|
322 $datadir = '/var/lib/mysql' |
|
323 $log_error = '/var/log/mysqld.log' |
|
324 $pidfile = '/var/run/mysqld/mysqld.pid' |
|
325 $root_group = 'root' |
|
326 $mysql_group = 'mysql' |
|
327 $server_service_name = 'mysqld' |
|
328 $socket = '/var/lib/mysql/mysql.sock' |
|
329 $ssl_ca = '/etc/mysql/cacert.pem' |
|
330 $ssl_cert = '/etc/mysql/server-cert.pem' |
|
331 $ssl_key = '/etc/mysql/server-key.pem' |
|
332 $tmpdir = '/tmp' |
|
333 # mysql::bindings |
|
334 $java_package_name = 'mysql-connector-java' |
|
335 $perl_package_name = 'perl-DBD-MySQL' |
|
336 $php_package_name = 'php-mysql' |
|
337 $python_package_name = 'MySQL-python' |
|
338 $ruby_package_name = 'ruby-mysql' |
|
339 # The libraries installed by these packages are included in client and server packages, no installation required. |
|
340 $client_dev_package_name = undef |
|
341 $daemon_dev_package_name = undef |
|
342 } |
|
343 |
|
344 default: { |
|
345 fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::osfamily} or ${::operatingsystem}") |
|
346 } |
|
347 } |
|
348 } |
|
349 } |
|
350 |
|
351 case $::operatingsystem { |
|
352 'Ubuntu': { |
|
353 $server_service_provider = upstart |
|
354 } |
|
355 default: { |
|
356 $server_service_provider = undef |
|
357 } |
|
358 } |
|
359 |
|
360 $default_options = { |
|
361 'client' => { |
|
362 'port' => '3306', |
|
363 'socket' => $mysql::params::socket, |
|
364 }, |
|
365 'mysqld_safe' => { |
|
366 'nice' => '0', |
|
367 'log-error' => $mysql::params::log_error, |
|
368 'socket' => $mysql::params::socket, |
|
369 }, |
|
370 'mysqld' => { |
|
371 'basedir' => $mysql::params::basedir, |
|
372 'bind-address' => '127.0.0.1', |
|
373 'datadir' => $mysql::params::datadir, |
|
374 'expire_logs_days' => '10', |
|
375 'key_buffer_size' => '16M', |
|
376 'log-error' => $mysql::params::log_error, |
|
377 'max_allowed_packet' => '16M', |
|
378 'max_binlog_size' => '100M', |
|
379 'max_connections' => '151', |
|
380 'myisam_recover' => 'BACKUP', |
|
381 'pid-file' => $mysql::params::pidfile, |
|
382 'port' => '3306', |
|
383 'query_cache_limit' => '1M', |
|
384 'query_cache_size' => '16M', |
|
385 'skip-external-locking' => true, |
|
386 'socket' => $mysql::params::socket, |
|
387 'ssl' => false, |
|
388 'ssl-ca' => $mysql::params::ssl_ca, |
|
389 'ssl-cert' => $mysql::params::ssl_cert, |
|
390 'ssl-key' => $mysql::params::ssl_key, |
|
391 'ssl-disable' => false, |
|
392 'thread_cache_size' => '8', |
|
393 'thread_stack' => '256K', |
|
394 'tmpdir' => $mysql::params::tmpdir, |
|
395 'user' => 'mysql', |
|
396 }, |
|
397 'mysqldump' => { |
|
398 'max_allowed_packet' => '16M', |
|
399 'quick' => true, |
|
400 'quote-names' => true, |
|
401 }, |
|
402 'isamchk' => { |
|
403 'key_buffer_size' => '16M', |
|
404 }, |
|
405 } |
|
406 |
|
407 ## Additional graceful failures |
|
408 if $::osfamily == 'RedHat' and $::operatingsystemmajrelease == '4' { |
|
409 fail("Unsupported platform: puppetlabs-${module_name} only supports RedHat 5.0 and beyond") |
|
410 } |
|
411 } |