Ich musste einen Prozess erstellen, der regelmäßig für mehrere vorhandene Server ausgeführt werden sollte, und ich dachte, dass es 2017 keine Option zum Schreiben von cron geben würde. Aufgrund der Berücksichtigung einiger Jobplaner habe ich mich für Rundeck entschieden und ihn festgelegt ~ Es ist ein Memo bis zur regulären Ausführung.
Die Umgebung, die ich ausprobiert habe, ist CentOS 7.
Rundeck funktioniert ohne Java nicht. Wenn Java nicht installiert ist, installieren Sie es.
yum install java-1.8.0
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck
Damit ist die Installation abgeschlossen.
Da wir über einen lokalen Browser darauf zugreifen möchten, ändern Sie ihn in eine globale IP-Adresse oder Domäne, auf die von außen zugegriffen wird.
vi /etc/rundeck/rundeck-config.properties
rundeck-config.properties
grails.serverURL=http://Domain ODER IP:4440
Stellen Sie die Serverseite und die Netzwerksicherheit so ein, dass sie mit 4440 kommunizieren können
Benutzername: admin Passwort: admin
Sie können mit darauf zugreifen.
Diese Einstellung ist in / etc / rundeck / Realm.properties
geschrieben, aber das Passwort ist auch klar und es ist überhaupt nicht gut für die Sicherheit.
realm.properties
admin:admin,user,admin,architect,deploy,build
Ändern Sie zunächst dieses Klartextkennwort und die Beschreibung der Einstellungsdatei in md5.
In diesem Beispiel wird "newadmin" als neues Passwort festgelegt.
sudo java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password admin newadmin
Dann wird der folgende Hashwert generiert
OBF:1x151t331u2a1y7z1b301t121x1h
MD5:b0a24b98c089b3b0f5d4174420cebe0c
CRYPT:advDltGLaH7Bo
Kopieren Sie hier den gesamten Teil von MD5: b0a24b98c089b3b0f5d4174420cebe0c
.
Öffnen Sie dann / etc / rundeck / Realm.properties
und nehmen Sie die folgenden Änderungen vor.
realm.properties
admin:MD5:b0a24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build
Es gibt eine .jar
Datei in / var / lib / rundeck / bootstrap /
, aber die Anzahl scheint je nach Version von Rundeck leicht unterschiedlich zu sein. Versuchen Sie "cd / var / lib / rundeck / bootstrap" und verwenden Sie den Dateinamen der .jar-Datei, die mit "jetty-all-" beginnt.
Fügen Sie hier den Benutzer poweruser
hinzu, der dem Administrator entspricht, und das Passwort mypassword
.
java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password poweruser mypassword
Der Hash wird wie im Fall von admin generiert. Kopieren Sie ihn daher.
Fügen Sie die Poweruser-Einstellung zu / etc / rundeck / Realm.properties
sowie zu Admin hinzu, wie unten gezeigt.
realm.properties
# admin
admin:MD5:b0a24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build
# poweruser
poweruser:MD5:abc24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build
Benutzerberechtigungseinstellungen usw. werden in diese `` aclpolicy
Datei geschrieben.
Wenn Sie cd / etc / rundeck && ll
ausführen, finden Sie Dateien wie aclpolicy für den Administrator und properties
, die dieses Mal nicht geändert werden.
Dieses Mal erstellen wir einen Benutzer mit den gleichen Berechtigungen wie "admin". Kopieren Sie also die Richtlinien von admin.
cd /etc/rundeck
cp admin.aclpolicy poweruser.aclpolicy
Damit sind die neuen Benutzereinstellungen abgeschlossen.
Reflektiert die Einstellungen.
systemctl restart rundeckd
Sie können vorerst ein Projekt mit nur einem Namen erstellen
Erstellen Sie einen Job über die Schaltfläche Job erstellen.
Diesmal habe ich Script ausgewählt und echo "ausgefüllt, dies ist TEST"
.
Drücken Sie nach der Eingabe die Schaltfläche Speichern und dann die Schaltfläche Erstellen des Jobs.
Führen Sie den registrierten Job über die Schaltfläche Job jetzt ausführen aus.
Bei Erfolg wird ein solches Bild angezeigt.
Wenn Sie sich den Knoten auf der Registerkarte "Bericht" ansehen, können Sie sehen, dass das von Ihnen eingegebene Echo verarbeitet wird.
Öffnet den Jobbearbeitungsbildschirm Menü Jobs ⇒ Bearbeiten Sie diesen Job.
Ändern Sie im Jobeinstellungsbildschirm "Zeitplan für wiederholte Ausführung" in "Ja" und legen Sie fest.
Es ist ziemlich intuitiv oder in Ordnung, wenn Sie es so einstellen können, wie Sie es sehen.
Dies ist die einzige Einstellung. Es gibt auch einen Crontab-Modus, so dass es praktisch erscheint, wenn Sie von einem vorhandenen Crontab portieren.
Überprüfen Sie nach Ablauf der eingestellten Zeit, ob sie ausgeführt werden kann. Die Bestätigungsmethode ist dieselbe wie bei der manuellen Ausführung.
Bisher haben wir an dem Server gearbeitet, auf dem Rundeck installiert ist. Von hier aus werde ich schreiben, wie die Verarbeitung ausgeführt wird, indem ich mich bei einem anderen Server anmelde, den Sie tatsächlich verwenden werden.
Es ist erforderlich, dass Sie die Schlüsselauthentifizierungsanmeldung ohne Kennwort von dem Server durchführen können, auf dem Rundeck auf dem Server installiert ist, auf dem Sie den Prozess ausführen möchten.
Das Hinzufügen eines Knotens über die GUI ist leider nicht möglich.
Ändern Sie die Einstellungsdatei wie folgt.
Da wir dieses Mal ein Projekt namens "test" erstellt haben, bearbeiten Sie die folgenden Dateien.
/var/rundeck/projects/test/etc/resources.xml
resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
#Localhost-Einstellungen, die bereits vorhanden sein sollten
<node name="localhost" description="Rundeck server node" tags="" hostname="localhost" osArch="amd64" osFamily="unix" osName="Linux" osVersion="el7.x86_64" username="rundeck"/>
#Fügen Sie Folgendes hinzu
<node name="remotehost" description="Remote server node" tags="" hostname="10.1.0.12" osArch="amd64" osFamily="unix" osName="Linux" osVersion="6.5" username="remoteuser"/>
</project>
Fügen Sie die folgenden Einstellungen zu <Projekt> </ Projekt>
hinzu.
Einzelheiten entnehmen Sie bitte dem Beamten http://rundeck.org/docs/man5/resource-xml.html
Dieses Mal wird davon ausgegangen, dass es bereits einen Benutzer gibt, der sich bei jedem SSH anmelden kann, und dass ein Paar aus privatem und öffentlichem Schlüssel vorhanden ist.
Klicken Sie auf dem Projektstartbildschirm auf die Schaltfläche Konfigurieren.
Klicken Sie auf die Schaltfläche Einfache Konfiguration.
Wenn Sie den Standardknoten-Executor überprüfen
/var/lib/rundeck/.ssh/id_rsa
Es ist geworden. Ich denke, der gleiche Wert ist für SCP
von Default Node File Copier
eingestellt.
Dieses Mal setzen wir den vorhandenen privaten Schlüssel unter diesem / var / lib / rundeck / .ssh /
.
Es wird davon ausgegangen, dass bereits ein Benutzer mit dem Namen "remoteuser" vorhanden ist, dass "id_rsa" vorhanden ist und auf dem verbundenen Server "autorisierte Schlüssel" festgelegt ist.
Kopieren Sie den privaten Schlüssel von remoteuser
unter / var / lib / rundeck / .ssh
und ändern Sie die Gruppe und den Eigentümer in rundeck
cp /home/remoteuser/.ssh/id_rsa /var/lib/rundeck/.ssh/remoteuser_id_rsa
chown rundeck remoteuser_id_rsa
chgrp rundeck remoteuser_id_rsa
Gehen Sie genauso vor wie beim vorherigen "Überprüfen Sie die Standardeinstellung für den privaten Schlüssel", um zum Einstellungsbildschirm zu gelangen.
Stellen Sie den Schlüssel des kopierten remoteuser
ein.
Öffnen Sie den Job und setzen Sie "Befehl - Ausführen eines Remote-Befehls" von "Hinzufügen eines Schritts" von "Workflow".
Führen Sie pwd
als Test aus.
Nach dem Speichern sollte es sich im folgenden Zustand befinden.
Wenn Sie "Versand an Knoten" auswählen und "Remotehost" in "Knotenfilter" eingeben, werden die konfigurierten Knoten als Kandidaten angezeigt.
Drücken Sie nach dem Einrichten auf diesen Punkt Speichern, um zu speichern.
Führen Sie es wie zuvor aus, und wenn "Erfolgreich" angezeigt wird, ist es erfolgreich.
Wenn dies fehlschlägt, wird Failed
wie unten gezeigt angezeigt. Bitte bestätigen Sie die Einstellungen erneut.
Sie können jetzt Jobs regelmäßig und auf Remote-Hosts ausführen. cron kann problemlos mit cron ausgeführt werden. Es ist jedoch in Ordnung, wenn Einstellungen vorhanden sind, bei denen Sie nicht wissen, wer zu welchem Zweck hinzugefügt wurde, ein Fehler auftritt oder wenn Sie Einstellungen für jeden Server schreiben, wenn mehrere Server wie dieses vorhanden sind. Es gibt verschiedene Probleme wie Schmerzhaftigkeit und schwierige Ausführungsfehler.
Ich denke, es ist ein bisschen anders zu sagen, dass Rundeck alles löst, aber zumindest ist es oft viel klarer, als es mit cron auszuführen, also denke ich darüber nach, das verbleibende vorhandene cron schrittweise auf dieses zu migrieren ..
Als ich es bediente, hatte ich das Gefühl, dass es in der Nähe von Jenkins war.
Recommended Posts