Ich habe einen kleinen Cluster, der aus einigen Linux-Knoten besteht. Es gibt ein gemeinsames NFS und ich habe auf allen Knoten dasselbe Benutzerkonto mit gemeinsamen SSH-Schlüsseln, aber ansonsten hat jeder Knoten sein eigenes Dateisystem und seine eigene Konfiguration.
Ich möchte die Konfiguration aller Knoten von einem zentralen Knoten aus steuern können. Eine typische Konfiguration besteht hauptsächlich aus Konfigurationsdateien, sowohl im Benutzerverzeichnis als auch in /etc
oder /opt
. Gelegentlich muss ich auch dieselben Pakete auf allen Knoten installieren oder andere Shell-Befehle ausführen.
Dies ist ein kleiner Cluster, der kaum Automatisierungssysteme auf Unternehmensebene oder andere komplexe Installationen rechtfertigt. Gibt es eine andere Möglichkeit, die Sie ausprobiert und getestet haben, vorzugsweise leichtgewichtig und Open Source? Oder sogar direkt auf BASH/SSH-Hacks basierend? Danke.
Antwort1
Ich kann Saltstack wärmstens empfehlen. Es ist flexibel, skalierbar, leicht und kostenlos.
Antwort2
Ansiblesollte funktionieren, wenn Sie sie von Linux oder Mac OS X mit Homebrew aus steuern. Windows wird für die Steuermaschine nicht unterstützt. Die Linux-Knoten müssen über SSH und Python verfügen, aber da die meisten Linux-Distributionen Python standardmäßig installieren, sind Sie wahrscheinlich bereits abgedeckt. Alles, was Sie tun müssen, istInstallierenAnsible auf dem Master, was einfach sein sollte.
Sehen Sie sich die 23 Minuten anSchnellstartvideoum eine bessere Vorstellung zu bekommen. Ich empfehle auch einen Blick auf dieEinführung in Ad-hoc-BefehleAbschnitt aus der Dokumentation:
Führen Sie den Befehl auf allen Servern einer Gruppe, in diesem Fall Atlanta, in 10 parallelen Forks aus:
$ ansible atlanta -a "/sbin/reboot" -f 10
Stellen Sie sicher, dass ein Paket installiert ist, aber aktualisieren Sie es nicht:
$ ansible webservers -m yum -a "name=acme state=installed"
So übertragen Sie eine Datei direkt auf mehrere verschiedene Server:
$ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
Stellen Sie sicher, dass auf allen Webservern ein Dienst gestartet ist:
$ ansible webservers -m service -a "name=httpd state=started"
Es gibt auch einigeBeispielevon Spielbüchern.
Antwort3
Zum Ausführen von Befehlen können Sie ein Tool verwenden, das einen Befehl auf mehreren SSH-Servern ausführen kann
Hier sind einige davon:
Beide in Debian und Ubuntu verfügbar.
Antwort4
VersuchenErwartenSkripte. Sie sind eine großartige Möglichkeit, die Ausführung derselben Aufgaben auf mehreren Computern zu automatisieren.
Mit expect-Skripten müssen Sie sich nicht manuell bei jedem Computer anmelden und dieselbe Aufgabe immer wieder ausführen. Ich verwende es für Dinge wie das Ändern von Passwörtern eines Benutzers auf allen Computern, das Ausführen von Prüfskripten auf jedem Computer usw.