summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2009-02-21 17:22:47 +0000
committermh <mh@immerda.ch>2009-02-21 17:22:47 +0000
commit288a33be75de3d6e75d6039bd92dcfda46fda190 (patch)
treeef36965c38daa0b7cd7e89fc5aea6e1130572416
parent2dc631bd2a441644090ae9075135db8e977ff03e (diff)
merged with puzzle
-rw-r--r--files/optimize/optimize_tables.rb10
-rw-r--r--manifests/devel.pp6
-rw-r--r--manifests/disable.pp16
-rw-r--r--manifests/init.pp50
-rw-r--r--plugins/puppet/type/mysql_user.rb26
5 files changed, 68 insertions, 40 deletions
diff --git a/files/optimize/optimize_tables.rb b/files/optimize/optimize_tables.rb
new file mode 100644
index 0000000..5bd2a1f
--- /dev/null
+++ b/files/optimize/optimize_tables.rb
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+
+tables = %x{mysql -Bse "SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql') AND Data_free > 0 AND ENGINE IN ('MyISAM','InnoDB','ARCHIVE')"}
+tables.each { |table|
+ tableitems = table.chomp.split(/\t/)
+ system "mysql #{tableitems[0]} -Bse \"OPTIMIZE TABLE #{tableitems[1]}\" | grep -q OK"
+ if $?.to_I > 0 then
+ puts "error while optimizing #{tableitems[0]}. #{tableitems[1]}"
+ end
+}
diff --git a/manifests/devel.pp b/manifests/devel.pp
index 225d91e..213aa7c 100644
--- a/manifests/devel.pp
+++ b/manifests/devel.pp
@@ -1,5 +1,5 @@
class mysql::devel{
- package{'mysql-devel':
- ensure => present,
- }
+ package{'mysql-devel':
+ ensure => present,
+ }
}
diff --git a/manifests/disable.pp b/manifests/disable.pp
new file mode 100644
index 0000000..f31f58f
--- /dev/null
+++ b/manifests/disable.pp
@@ -0,0 +1,16 @@
+# manifests/disable.pp
+
+# class to install mysql-server
+# in a disabled way.
+class mysql::disable {
+ package{'mysql-server':
+ ensure => installed,
+ }
+
+ service {mysql:
+ ensure => stopped,
+ enable => false,
+ hasstatus => true,
+ require => Package[mysql],
+ }
+}
diff --git a/manifests/init.pp b/manifests/init.pp
index a3542fc..e7c104a 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -21,22 +21,18 @@ class mysql::server {
centos: { include mysql::server::centos }
default: { include mysql::server::base }
}
-
if $selinux {
include mysql::selinux
}
-
if $use_munin {
include mysql::munin
}
}
class mysql::server::base {
-
package { mysql-server:
ensure => present,
}
-
file{'/etc/mysql/my.cnf':
source => [
"puppet://$server/files/mysql/${fqdn}/my.cnf",
@@ -49,7 +45,6 @@ class mysql::server::base {
notify => Service[mysql],
owner => root, group => 0, mode => 0644;
}
-
file{'/var/lib/mysql/data':
ensure => directory,
require => Package[mysql-server],
@@ -67,43 +62,43 @@ class mysql::server::base {
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':
source => "puppet://$server/mysql/config/${operatingsystem}/setmysqlpass.sh",
require => Package[mysql-server],
owner => root, group => 0, mode => 0500;
}
-
file {'/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",
unless => "mysqladmin -uroot status > /dev/null",
require => [ File['/opt/bin/setmysqlpass.sh'], Package[mysql-server] ],
}
-
file{'/etc/cron.d/mysql_backup.cron':
- source => [ "puppet://$server/mysql/backup/mysql_backup.cron.${operatingsystem}",
- "puppet://$server/mysql/backup/mysql_backup.cron" ],
- require => [ Exec[set_mysql_rootpw], File['/root/.my.cnf'] ],
- owner => root, group => 0, mode => 0600;
- }
-
- service {mysql:
- ensure => running,
- enable => true,
- hasstatus => true,
- require => Package[mysql],
- }
-
- # Collect all databases and users
- Mysql_database<<| tag == "mysql_${fqdn}" |>>
- Mysql_user<<| tag == "mysql_${fqdn}" |>>
- Mysql_grant<<| tag == "mysql_${fqdn}" |>>
+ source => [ "puppet://$server/mysql/backup/mysql_backup.cron.${operatingsystem}",
+ "puppet://$server/mysql/backup/mysql_backup.cron" ],
+ require => [ Exec[set_mysql_rootpw], File['/root/.my.cnf'] ],
+ owner => root, group => 0, mode => 0600;
+ }
+ file{'/etc/cron.weekly/mysql_optimize_tables.rb':
+ source => "puppet://$server/mysql/optimize/optimize_tables.rb",
+ require => [ Exec[set_mysql_rootpw], File['/root/.my.cnf'] ],
+ owner => root, group => 0, mode => 0700;
+ }
+ service {mysql:
+ ensure => running,
+ enable => true,
+ hasstatus => true,
+ require => Package[mysql],
+ }
+
+ # Collect all databases and users
+ Mysql_database<<| tag == "mysql_${fqdn}" |>>
+ Mysql_user<<| tag == "mysql_${fqdn}" |>>
+ Mysql_grant<<| tag == "mysql_${fqdn}" |>>
}
class mysql::server::gentoo inherits mysql::server::base {
@@ -117,15 +112,12 @@ class mysql::server::clientpackage inherits mysql::server::base {
package{mysql:
ensure => present,
}
-
File['/opt/bin/setmysqlpass.sh']{
require +> Package[mysql],
}
-
File['/root/.my.cnf']{
require +> Package[mysql],
}
-
Exec['set_mysql_rootpw']{
require +> Package[mysql],
}
diff --git a/plugins/puppet/type/mysql_user.rb b/plugins/puppet/type/mysql_user.rb
index d92b610..55d97b6 100644
--- a/plugins/puppet/type/mysql_user.rb
+++ b/plugins/puppet/type/mysql_user.rb
@@ -1,12 +1,22 @@
# This has to be a separate type to enable collecting
Puppet::Type.newtype(:mysql_user) do
- @doc = "Manage a database user."
- ensurable
- newparam(:name) do
- desc "The name of the user. This uses the 'username@hostname' form."
- end
- newproperty(:password_hash) do
- desc "The password hash of the user. Use mysql_password() for creating such a hash."
- end
+ @doc = "Manage a database user."
+ ensurable
+ newparam(:name) do
+ desc "The name of the user. This uses the 'username@hostname' form."
+
+ validate do |value|
+ if value.split('@').first.size > 16
+ raise ArgumentError,
+ "MySQL usernames are limited to a maximum of 16 characters"
+ else
+ super
+ end
+ end
+ end
+
+ newproperty(:password_hash) do
+ desc "The password hash of the user. Use mysql_password() for creating such a hash."
+ end
end