diff options
author | mh <mh@immerda.ch> | 2009-02-21 17:22:47 +0000 |
---|---|---|
committer | mh <mh@immerda.ch> | 2009-02-21 17:22:47 +0000 |
commit | 288a33be75de3d6e75d6039bd92dcfda46fda190 (patch) | |
tree | ef36965c38daa0b7cd7e89fc5aea6e1130572416 | |
parent | 2dc631bd2a441644090ae9075135db8e977ff03e (diff) |
merged with puzzle
-rw-r--r-- | files/optimize/optimize_tables.rb | 10 | ||||
-rw-r--r-- | manifests/devel.pp | 6 | ||||
-rw-r--r-- | manifests/disable.pp | 16 | ||||
-rw-r--r-- | manifests/init.pp | 50 | ||||
-rw-r--r-- | plugins/puppet/type/mysql_user.rb | 26 |
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 |