summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/setmysqlpass.sh18
-rw-r--r--manifests/init.pp33
-rw-r--r--templates/my.cnf.erb4
3 files changed, 55 insertions, 0 deletions
diff --git a/files/setmysqlpass.sh b/files/setmysqlpass.sh
new file mode 100644
index 0000000..586775e
--- /dev/null
+++ b/files/setmysqlpass.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Set MySQL password.
+#
+
+CONF="/root/.my.cnf"
+
+# Check config file
+if [ ! -e "$CONF" ]; then
+ echo "File not found: $CONF"
+ exit 1
+fi
+
+# Get password from configuration
+passwd="`grep ^'password='` $CONF | cut -d '=' -f 2"
+
+# Set the password
+echo "USE mysql; UPDATE user SET Password=PASSWORD('$passwd') WHERE User='root' AND Host='localhost';" | /usr/bin/mysql -u root
diff --git a/manifests/init.pp b/manifests/init.pp
index 58adab1..d498152 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,5 +1,6 @@
# Using recipe from
# from http://reductivelabs.com/trac/puppet/wiki/Recipes/MySQLStoredConfiguration
+# and snippets from git://git.puppet.immerda.ch/module-mysql.git
class mysql {
package { "mysql-client":
@@ -18,4 +19,36 @@ class mysql::server inherits mysql {
hasstatus => true,
require => Package["mysql-server"],
}
+
+ case $mysql_rootpw {
+ '': { fail("You need to define a mysql root password! Please set \$mysql_rootpw in your site.pp or host config") }
+ }
+
+ file{ '/usr/local/sbin/setmysqlpass.sh':
+ source => "puppet://$server/modules/mysql/setmysqlpass.sh",
+ require => Package[mysql-server],
+ owner => root, group => 0, mode => 0500;
+ }
+
+ exec{'set_mysql_rootpw':
+ command => "/usr/local/sbin/setmysqlpass.sh",
+ unless => "mysqladmin -uroot status > /dev/null",
+ require => [ File['/usr/local/sbin/setmysqlpass.sh'], Package[mysql-server] ],
+ }
+
+ mysql::cnf { "root":
+ home => "/root",
+ passwd => $mysql_rootpw,
+ }
+
+ define mysql::cnf($home, $passwd) {
+ $mysql_passwd = $passwd
+ file { "$home/.my.cnf":
+ content => template('mysql/my.cnf.erb'),
+ require => [ Package[mysql-server] ],
+ owner => root,
+ group => 0,
+ mode => 0400,
+ }
+ }
}
diff --git a/templates/my.cnf.erb b/templates/my.cnf.erb
new file mode 100644
index 0000000..c56c89f
--- /dev/null
+++ b/templates/my.cnf.erb
@@ -0,0 +1,4 @@
+[client]
+user=root
+host=localhost
+password=<%= mysql_passwd %>