Kleines Puppet Rezept um zu überprüfen ob ein MySQL User bereits existiert und falls nicht, diesen anzulegen:
class mysql-management {
$mysql_password = "verysecure"
exec { "mysql-password_nms" :
path => ["/bin", "/usr/bin", "/usr/sbin"],
unless => "bash -c \"if [ `mysql -B -N -u admin -p$mysql_password -e \\"SELECT COUNT(*) FROM mysql.user WHERE user='manager' AND host='localhost'\\"` == \\"1\\" ]; then exit 0; else exit 1; fi;\"",
command => "mysql -u admin -p$mysql_password -e \"GRANT ALL ON *.* TO manager@'localhost' IDENTIFIED BY 'superpassword' WITH GRANT OPTION;\""
}
}
Das Kommando bei “unless” finde ich etwas umständlich – aber mir ist nichts eleganteres eingefallen um auf einen User zu prüfen… Nachtrag: Das vorgesetzte Bash-Kommando ist notwendig damit das IF-Konstrukt auch auf allen Systemen funktioniert. Puppet setzt anscheinend je nach Distribution auf einen anderen Interpreter. Damit wird die Escape-Orgie aber nur noch schöner.