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.

Fedora EPEL

Für Pakete welche von RHEL/Centos nicht direkt vertrieben werden: fedoraproject.org/wiki/EPEL.

„Extra Packages for Enterprise Linux (EPEL) is a volunteer-based community effort from the Fedora project to create a repository of high-quality add-on packages for Red Hat Enterprise (RHEL) and its compatible spinoffs such as CentOS or Scientific Linux. Fedora is the upstream of RHEL and add-on packages for EPEL are sourced from the Fedora repository primarily and built against RHEL.“

ich nutze von dort z.B. puppet und syslog-ng.

Puppet suicide

Man sollte in diesen Zeiten vorsichtig mit dem Begriff umgehen, aber meine Puppet-Instanzen haben sich heute alle selbst beendet.

Eigentlich wollte ich nur die Puppet-Konfigurationsdatei selbst auch per Puppet verteilen. Leider vergaß ich bei der Definition des Services die Option „hasrestart“ – welche Puppet sagt, dass das init-Script des betreffenden Services auch eine restart Option hat. Ansonsten wird der Service erst gestoppt und dann gestartet. Was in meinem Fall passiert ist kann sich jeder denken…

service { puppet :
        ensure => running,
        enable => true,
        hasrestart => true,
        subscribe => [Remotefile["puppet.conf"]],
}

„Puppet suicide“ weiterlesen

Puppet YUM-Repository

David Lutterkort hat Puppet-RPMs für Centos/RedHat in seinem Repository:

# /etc/yum.conf
 
[dlutter-rhel5]
name=Unsupported RHEL5 packages (lutter)
baseurl=http://people.redhat.com/dlutter/yum/rhel/5/$basearch/
enabled=1
gpgcheck=0

Die Installation des Puppet-Clients ist dank dem Repository IMHO wesentlich einfacher geworden, da man sich nicht mehr selbst mit ruby-Dependencies herumschlagen muss.

Mit Puppet ist das automatisierte Aufsetzen/Konfigurieren von neuen Servern ein Kinderspiel. Man definiert mittels Templates die Konfiguration und Paketausstattung des Servers – um den Rest (die eigentliche Installation und Konfiguration) kümmert sich Puppet.

„Puppet YUM-Repository“ weiterlesen