diff options
author | Jerome Charaoui <jcharaoui@cmaisonneuve.qc.ca> | 2009-12-10 12:22:25 -0500 |
---|---|---|
committer | Jerome Charaoui <jcharaoui@cmaisonneuve.qc.ca> | 2009-12-10 12:22:25 -0500 |
commit | dcc761cbfd8bdfdf1f79486a5a120b55d18b5bfa (patch) | |
tree | 57106334baf9f486f0d5fadad1c0df1c48070b6b | |
parent | 911dbc4426a7a42dbc6fc48ab61958fa6c6e1234 (diff) |
add Debian support
-rw-r--r-- | files/config/Debian/setmysqlpass.sh | 17 | ||||
-rw-r--r-- | files/config/my.cnf.Debian | 143 | ||||
-rw-r--r-- | manifests/client.pp | 5 | ||||
-rw-r--r-- | manifests/server.pp | 1 | ||||
-rw-r--r-- | manifests/server/base.pp | 35 | ||||
-rw-r--r-- | manifests/server/centos.pp | 2 | ||||
-rw-r--r-- | manifests/server/clientpackage.pp | 8 | ||||
-rw-r--r-- | manifests/server/debian.pp | 8 |
8 files changed, 200 insertions, 19 deletions
diff --git a/files/config/Debian/setmysqlpass.sh b/files/config/Debian/setmysqlpass.sh new file mode 100644 index 0000000..5bd63e2 --- /dev/null +++ b/files/config/Debian/setmysqlpass.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +test $# -gt 0 || exit 1 + +/etc/init.d/mysql stop + +/usr/sbin/mysqld --skip-grant-tables --user=root --datadir=/var/lib/mysql --log-bin=/var/lib/mysql/mysql-bin & +sleep 5 +echo "USE mysql; UPDATE user SET Password=PASSWORD('$1') WHERE User='root' AND Host='localhost';" | mysql -u root +killall mysqld +sleep 5 +# chown to be on the safe side +ls -al /var/lib/mysql/mysql-bin.* &> /dev/null +[ $? == 0 ] && chown mysql.mysql /var/lib/mysql/mysql-bin.* + +/etc/init.d/mysql start + diff --git a/files/config/my.cnf.Debian b/files/config/my.cnf.Debian new file mode 100644 index 0000000..1935cfb --- /dev/null +++ b/files/config/my.cnf.Debian @@ -0,0 +1,143 @@ +# +# The MySQL database server configuration file. +# +# You can copy this to one of: +# - "/etc/mysql/my.cnf" to set global options, +# - "~/.my.cnf" to set user-specific options. +# +# One can use all long options that the program supports. +# Run program with --help to get a list of available options and with +# --print-defaults to see which it would actually understand and use. +# +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html + +# This will be passed to all mysql clients +# It has been reported that passwords should be enclosed with ticks/quotes +# escpecially if they contain "#" chars... +# Remember to edit /etc/mysql/debian.cnf when changing the socket location. +[client] +port = 3306 +socket = /var/run/mysqld/mysqld.sock + +# Here is entries for some specific programs +# The following values assume you have at least 32M ram + +# This was formally known as [safe_mysqld]. Both versions are currently parsed. +[mysqld_safe] +socket = /var/run/mysqld/mysqld.sock +nice = 0 + +[mysqld] +# +# * Basic Settings +# +user = mysql +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +port = 3306 +basedir = /usr +datadir = /var/lib/mysql +tmpdir = /tmp +language = /usr/share/mysql/english +skip-external-locking +# +# Instead of skip-networking the default is now to listen only on +# localhost which is more compatible and is not less secure. +bind-address = 127.0.0.1 +# +# * Fine Tuning +# +key_buffer = 16M +max_allowed_packet = 16M +thread_stack = 128K +thread_cache_size = 8 +# This replaces the startup script and checks MyISAM tables if needed +# the first time they are touched +myisam-recover = BACKUP +#max_connections = 100 +#table_cache = 64 +#thread_concurrency = 10 +# +# * Query Cache Configuration +# +query_cache_limit = 1M +query_cache_size = 16M +# +# * Logging and Replication +# +# Both location gets rotated by the cronjob. +# Be aware that this log type is a performance killer. +#log = /var/log/mysql/mysql.log +# +# Error logging goes to syslog. This is a Debian improvement :) +# +# Here you can see queries with especially long duration +#log_slow_queries = /var/log/mysql/mysql-slow.log +#long_query_time = 2 +#log-queries-not-using-indexes +# +# The following can be used as easy to replay backup logs or for replication. +# note: if you are setting up a replication slave, see README.Debian about +# other settings you may need to change. +#server-id = 1 +#log_bin = /var/log/mysql/mysql-bin.log +expire_logs_days = 10 +max_binlog_size = 100M +#binlog_do_db = include_database_name +#binlog_ignore_db = include_database_name +# +# * BerkeleyDB +# +# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12. +skip-bdb +# +# * InnoDB +# +# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. +# Read the manual for more InnoDB related options. There are many! +# You might want to disable InnoDB to shrink the mysqld process by circa 100MB. +#skip-innodb +# +# * Security Features +# +# Read the manual, too, if you want chroot! +# chroot = /var/lib/mysql/ +# +# For generating SSL certificates I recommend the OpenSSL GUI "tinyca". +# +# ssl-ca=/etc/mysql/cacert.pem +# ssl-cert=/etc/mysql/server-cert.pem +# ssl-key=/etc/mysql/server-key.pem + + + +[mysqldump] +quick +quote-names +max_allowed_packet = 16M + +[mysql] +#no-auto-rehash # faster start of mysql but no tab completition + +[isamchk] +key_buffer = 16M + +# +# * NDB Cluster +# +# See /usr/share/doc/mysql-server-*/README.Debian for more information. +# +# The following configuration is read by the NDB Data Nodes (ndbd processes) +# not from the NDB Management Nodes (ndb_mgmd processes). +# +# [MYSQL_CLUSTER] +# ndb-connectstring=127.0.0.1 + + +# +# * IMPORTANT: Additional settings that can override those from this file! +# The files must end with '.cnf', otherwise they'll be ignored. +# +!includedir /etc/mysql/conf.d/ + diff --git a/manifests/client.pp b/manifests/client.pp index 15234e6..d16e798 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -1,5 +1,10 @@ class mysql::client { package{mysql: + name => $operatingsystem ? { + 'debian' => 'mysql-client', + default => 'mysql', + }, + alias => 'mysql', ensure => present, } if $use_shorewall { diff --git a/manifests/server.pp b/manifests/server.pp index 4ee9cd0..eb4daa7 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -2,6 +2,7 @@ class mysql::server { case $operatingsystem { gentoo: { include mysql::server::gentoo } centos: { include mysql::server::centos } + debian: { include mysql::server::debian } default: { include mysql::server::base } } if $use_munin { diff --git a/manifests/server/base.pp b/manifests/server/base.pp index da61e47..2fa3263 100644 --- a/manifests/server/base.pp +++ b/manifests/server/base.pp @@ -2,7 +2,8 @@ class mysql::server::base { package { mysql-server: ensure => present, } - file{'/etc/mysql/my.cnf': + file { 'mysql_main_cnf': + path => '/etc/mysql/my.cnf', source => [ "puppet://$server/modules/site-mysql/${fqdn}/my.cnf", "puppet://$server/modules/site-mysql/my.cnf", @@ -14,47 +15,53 @@ class mysql::server::base { notify => Service[mysql], owner => root, group => 0, mode => 0644; } - file{'/var/lib/mysql/data': + file { 'mysql_data_dir': + path => '/var/lib/mysql/data', ensure => directory, require => Package[mysql-server], - before => File['/etc/mysql/my.cnf'], + before => File['mysql_main_cnf'], owner => mysql, group => mysql, mode => 0755; } - file{'/var/lib/mysql/data/ibdata1': + file { 'mysql_ibdata1': + path => '/var/lib/mysql/data/ibdata1', ensure => file, require => Package[mysql-server], - before => File['/opt/bin/setmysqlpass.sh'], + before => File['mysql_setmysqlpass.sh'], owner => mysql, group => mysql, mode => 0660; } case $mysql_rootpw { '': { fail("You need to define a mysql root password! Please set \$mysql_rootpw in your site.pp or host config") } } - file{'/opt/bin/setmysqlpass.sh': + file { 'mysql_setmysqlpass.sh': + path => '/usr/local/sbin/setmysqlpass.sh', source => "puppet://$server/modules/mysql/config/${operatingsystem}/setmysqlpass.sh", require => Package[mysql-server], owner => root, group => 0, mode => 0500; } - file {'/root/.my.cnf': + file { 'mysql_root_cnf': + path => '/root/.my.cnf', content => template('mysql/root/my.cnf.erb'), require => [ Package[mysql-server] ], owner => root, group => 0, mode => 0400; } - exec{'set_mysql_rootpw': - command => "/opt/bin/setmysqlpass.sh $mysql_rootpw", + exec { 'mysql_set_rootpw': + command => "/usr/local/sbin/setmysqlpass.sh $mysql_rootpw", unless => "mysqladmin -uroot status > /dev/null", - require => [ File['/opt/bin/setmysqlpass.sh'], Package[mysql-server] ], + require => [ File['mysql_setmysqlpass.sh'], Package[mysql-server] ], } - file{'/etc/cron.d/mysql_backup.cron': + file { 'mysql_backup_cron': + path => '/etc/cron.d/mysql_backup.cron', source => [ "puppet://$server/modules/mysql/backup/mysql_backup.cron.${operatingsystem}", "puppet://$server/modules/mysql/backup/mysql_backup.cron" ], - require => [ Exec[set_mysql_rootpw], File['/root/.my.cnf'] ], + require => [ Exec[mysql_set_rootpw], File['mysql_root_cnf'] ], owner => root, group => 0, mode => 0600; } - file{'/etc/cron.weekly/mysql_optimize_tables.rb': + file { 'mysql_optimize_cron': + path => '/etc/cron.weekly/mysql_optimize_tables.rb', source => "puppet://$server/modules/mysql/optimize/optimize_tables.rb", - require => [ Exec[set_mysql_rootpw], File['/root/.my.cnf'] ], + require => [ Exec[mysql_set_rootpw], File['mysql_root_cnf'] ], owner => root, group => 0, mode => 0700; } service {mysql: diff --git a/manifests/server/centos.pp b/manifests/server/centos.pp index 98febb7..fa091c7 100644 --- a/manifests/server/centos.pp +++ b/manifests/server/centos.pp @@ -2,7 +2,7 @@ class mysql::server::centos inherits mysql::server::clientpackage { Service[mysql]{ name => 'mysqld', } - File['/etc/mysql/my.cnf']{ + File['mysql_main_cnf']{ path => '/etc/my.cnf', } diff --git a/manifests/server/clientpackage.pp b/manifests/server/clientpackage.pp index cf3bf57..217d497 100644 --- a/manifests/server/clientpackage.pp +++ b/manifests/server/clientpackage.pp @@ -1,15 +1,15 @@ class mysql::server::clientpackage inherits mysql::server::base { include mysql::client - File['/opt/bin/setmysqlpass.sh']{ + File['mysql_setmysqlpass.sh']{ require +> Package[mysql], } - File['/root/.my.cnf']{ + File['mysql_root_cnf']{ require +> Package[mysql], } - Exec['set_mysql_rootpw']{ + Exec['mysql_set_rootpw']{ require +> Package[mysql], } - File['/etc/cron.d/mysql_backup.cron']{ + File['mysql_backup_cron']{ require +> Package[mysql], } } diff --git a/manifests/server/debian.pp b/manifests/server/debian.pp new file mode 100644 index 0000000..ffc3570 --- /dev/null +++ b/manifests/server/debian.pp @@ -0,0 +1,8 @@ +class mysql::server::debian inherits mysql::server::clientpackage { + File['mysql_data_dir'] { + path => '/var/lib/mysql', + } + File['mysql_ibdata1'] { + path => '/var/lib/mysql/ibdata1', + } +} |