Puppet: MySQL user management

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.

Eine Antwort auf „Puppet: MySQL user management“

  1. Hi!
    Stand gerade vor dem gleichen Problem wie Du, doch die von Dir vorgeschlagene Escape-Orgie missfällt mir. Und nach einigen Überlegen und Testen bin ich zu folgender Lösung gekommen:


    unless => "test 1 -le `mysql -NB \
    -u root -p'${mysql::rootPassword}' mysql \
    -e \"SELECT count(User) FROM user \
    WHERE user='${user}' \
    AND password=${pwdUnlessSnippet} \
    AND host='${host}';\"`",

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.