diff options
-rw-r--r-- | files/setmysqlpass.sh | 18 | ||||
-rw-r--r-- | manifests/init.pp | 33 | ||||
-rw-r--r-- | templates/my.cnf.erb | 4 |
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 %> |