Konfigurationsmanagement: Maschinenübergreifende Abhängigkeiten

8

Ich habe Tools wie Puppet verwendet, um einzelne Systeme mit im Allgemeinen hohem Erfolg zu verwalten. Die Marionette fällt aus, weil sie Abhängigkeiten außerhalb eines einzelnen Servers nicht gut verwalten kann.

Auf einem MySQL-Server konfiguriere ich Puppet beispielsweise für Folgendes:

  • Konfigurieren Sie die Authentifizierung auf dem Computer so, dass sie meinen LDAP-Server erreicht
  • Konfigurieren Sie apt für die Verwendung meines lokalen Repository-Spiegels
  • Installieren Sie MySQL-Pakete
  • Schreiben Sie my.cnf
  • Starten Sie MySQL
  • Erstellen Sie Benutzer in der Datenbank

In diesen Schritten werden eine Reihe von Abhängigkeiten aufgelöst. Beispielsweise kann ich den Datenbankdienst nur starten, wenn ich die Pakete installiert habe. Dies ist nur möglich, wenn das apt-Repo korrekt konfiguriert ist.

Dieser MySQL-Server ist eine Box in einem Master-> Master-Replikations-Setup. In einer idealen Welt würde Puppet (oder ein ähnliches Tool) die Tatsache darstellen, dass Server B warten muss, bis Server A verfügbar ist, und dann versuchen muss, eine Replikationsbeziehung mit ihm herzustellen.

Hier gibt es viel Text - im Grunde frage ich: Gibt es Tools wie Puppet, die solche Abhängigkeiten zwischen Maschinen verwalten können?

Jon Topper
quelle

Antworten:

4

Wenn Sie Puppet verwenden, sind exportierte Ressourcen (und damit gespeicherte Konfigurationen ) das Werkzeug für den Job. Auf diese Weise können Sie Informationen zwischen Knoten austauschen. Bei Bedarf einschließlich der tatsächlichen Replikationseinstellungen.

Alternativ, und obwohl ich selbst kein Abonnent bin, behandeln einige Leute ihre Manifeste / Läufe als nicht deterministisch. Dies bedeutet, dass ein einzelner Lauf nicht unbedingt das vollständige Ergebnis eines Knotens deklariert. Es kann zwei oder mehr Läufe dauern, bis der Knoten seinen gewünschten Zustand erreicht.

Da die Konfiguration des MySQL-Slaves, bevor der Master verfügbar ist, nicht ganz fatal wäre, möchten Sie möglicherweise diesen Weg beschreiten. Es ist meiner Meinung nach allerdings nicht ganz so "schlau".

Dan Carley
quelle
0

Da ich kein Marionettenbenutzer bin, werden sich sicher andere mit angemesseneren Antworten melden, aber es scheint, als könnte ein Wrapper-Skript relativ einfach implementiert werden, das vor dem Starten des Dienstes überprüft wird.

Matt Simmons
quelle
0

Puppet kann das ganz gut. Lassen Sie jeden Server eine Ressource exportieren, um die anderen geeigneten Server so zu konfigurieren, dass sie das tun, was getan werden muss, sobald sie betriebsbereit sind. Ich habe kein Beispiel für MySQL, aber wir konfigurieren auf diese Weise viele DRBD-Ressourcen (wie etwa 80 bei der aktuellen Anzahl) sowie alle unsere Nagios-Konfigurationen.

womble
quelle
0

Die Kontrollstufe könnte genau das sein, wonach Sie suchen. Sie können es in Verbindung mit der Puppe verwenden, damit die Lernkurve nicht zu steil ist.

Schmiere
quelle