diff options
author | root <root@puppetmaster.black.co.at> | 2007-10-18 11:54:23 +0200 |
---|---|---|
committer | root <root@puppetmaster.black.co.at> | 2007-10-18 11:54:23 +0200 |
commit | ee94a2a56c73dc54439b34a58320c8c233ccdbd7 (patch) | |
tree | 1b3bd95539cf891c4f8e3d8fd78f1077a20b9f8a | |
parent | 813025c80066504345e72ead609075751fbc5b80 (diff) | |
download | puppet-mysql-ee94a2a56c73dc54439b34a58320c8c233ccdbd7.tar.gz puppet-mysql-ee94a2a56c73dc54439b34a58320c8c233ccdbd7.tar.xz puppet-mysql-ee94a2a56c73dc54439b34a58320c8c233ccdbd7.zip |
mysql: flush privileges, autorequire, minor adjustments
This commit executes a mysqladmin flush-privileges after every modification
of users or grants, thereby enabling mysql to actually look at the changes too.
grants now autorequire the appropriate db and user
adjustet my site.pp for new types
-rw-r--r-- | plugins/puppet/provider/mysql_grant/mysql.rb | 7 | ||||
-rw-r--r-- | plugins/puppet/provider/mysql_user/mysql.rb | 8 | ||||
-rw-r--r-- | plugins/puppet/type/mysql_grant.rb | 17 |
3 files changed, 30 insertions, 2 deletions
diff --git a/plugins/puppet/provider/mysql_grant/mysql.rb b/plugins/puppet/provider/mysql_grant/mysql.rb index 9d900ec..93d7ecf 100644 --- a/plugins/puppet/provider/mysql_grant/mysql.rb +++ b/plugins/puppet/provider/mysql_grant/mysql.rb @@ -10,6 +10,11 @@ Puppet::Type.type(:mysql_grant).provide(:mysql) do desc "Uses mysql as database." commands :mysql => '/usr/bin/mysql' + commands :mysqladmin => '/usr/bin/mysqladmin' + + def mysql_flush + mysqladmin "flush-privileges" + end # this parses the def split_name(string) @@ -44,6 +49,7 @@ Puppet::Type.type(:mysql_grant).provide(:mysql) do name[:host], name[:user], name[:db], ] end + mysql_flush end end @@ -129,6 +135,7 @@ Puppet::Type.type(:mysql_grant).provide(:mysql) do stmt = stmt << set << where mysql "mysql", "-Be", stmt + mysql_flush end end diff --git a/plugins/puppet/provider/mysql_user/mysql.rb b/plugins/puppet/provider/mysql_user/mysql.rb index 8238620..adc46c3 100644 --- a/plugins/puppet/provider/mysql_user/mysql.rb +++ b/plugins/puppet/provider/mysql_user/mysql.rb @@ -6,6 +6,7 @@ Puppet::Type.type(:mysql_user).provide(:mysql, desc "Use mysql as database." commands :mysql => '/usr/bin/mysql' + commands :mysqladmin => '/usr/bin/mysqladmin' # retrieve the current set of mysql users def self.instances @@ -29,6 +30,10 @@ Puppet::Type.type(:mysql_user).provide(:mysql, } end + def mysql_flush + mysqladmin "flush-privileges" + end + def query result = {} @@ -47,10 +52,12 @@ Puppet::Type.type(:mysql_user).provide(:mysql, def create mysql "mysql", "-e", "create user '%s' identified by PASSWORD '%s'" % [ @resource[:name].sub("@", "'@'"), @resource.should(:password_hash) ] + mysql_flush end def destroy mysql "mysql", "-e", "drop user '%s'" % @resource[:name].sub("@", "'@'") + mysql_flush end def exists? @@ -63,6 +70,7 @@ Puppet::Type.type(:mysql_user).provide(:mysql, def password_hash=(string) mysql "mysql", "-e", "SET PASSWORD FOR '%s' = '%s'" % [ @resource[:name].sub("@", "'@'"), string ] + mysql_flush end end diff --git a/plugins/puppet/type/mysql_grant.rb b/plugins/puppet/type/mysql_grant.rb index 8a858e6..0d31df3 100644 --- a/plugins/puppet/type/mysql_grant.rb +++ b/plugins/puppet/type/mysql_grant.rb @@ -3,12 +3,25 @@ Puppet::Type.newtype(:mysql_grant) do @doc = "Manage a database user's rights." #ensurable + autorequire :mysql_db do + # puts "Starting db autoreq for %s" % self[:name] + reqs = [] + matches = self[:name].match(/^([^@]+)@([^\/]+)\/(.+)$/) + unless matches.nil? + reqs << matches[3] + end + # puts "Autoreq: '%s'" % reqs.join(" ") + reqs + end + autorequire :mysql_user do + # puts "Starting user autoreq for %s" % self[:name] reqs = [] - matches = self[:name].match(/^([^@]+)@([^\/]+)$/) + matches = self[:name].match(/^([^@]+)@([^\/]+).*$/) unless matches.nil? - reqs << "%s@%s" % [ matches[0], matches[1] ] + reqs << "%s@%s" % [ matches[1], matches[2] ] end + # puts "Autoreq: '%s'" % reqs.join(" ") reqs end |