[JAVA] De-cron! Erstellen Sie mit Rundeck einen Job Scheduler

Einführung

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.

Installation

Java-Installation

Rundeck funktioniert ohne Java nicht. Wenn Java nicht installiert ist, installieren Sie es.

yum install java-1.8.0

Installieren Sie Rundeck

rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck

Damit ist die Installation abgeschlossen.

Rundeck-Einstellungen

URL-Änderung

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

Öffnen Sie den 4440-Port

Stellen Sie die Serverseite und die Netzwerksicherheit so ein, dass sie mit 4440 kommunizieren können

Admin-Benutzereinstellungen

Standardbenutzereinstellungen

Benutzername: admin Passwort: admin

Sie können mit darauf zugreifen.

スクリーンショット 2017-06-23 10.49.25.png

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 das Administratorkennwort und konvertieren Sie es in md5

Ä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

Über dieses Skript

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.

Neuen Benutzer hinzufügen

Fügen Sie hier den Benutzer poweruser hinzu, der dem Administrator entspricht, und das Passwort mypassword.

Befehl zum Hinzufügen eines Benutzers

java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password poweruser mypassword

Zu Realm.properties hinzugefügt

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

Fügen Sie aclpolicy hinzu

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.

Starten Sie rundeck neu

Reflektiert die Einstellungen.

systemctl restart rundeckd

Projekt hinzufügen

Minimale Einstellungen

Sie können vorerst ein Projekt mit nur einem Namen erstellen

スクリーンショット 2017-06-23 11.57.03.png

Einen Job erstellen

Erstellen Sie einen Job über die Schaltfläche Job erstellen. スクリーンショット 2017-06-23 11.57.54.png

Jobname und Beschreibung hinzufügen

スクリーンショット 2017-06-23 11.58.57.png

Workflow hinzufügen

Diesmal habe ich Script ausgewählt und echo "ausgefüllt, dies ist TEST".

スクリーンショット 2017-06-23 12.01.09.png スクリーンショット 2017-06-23 12.01.43.png

Drücken Sie nach der Eingabe die Schaltfläche Speichern und dann die Schaltfläche Erstellen des Jobs.

Führen Sie den Job manuell aus

Führen Sie den registrierten Job über die Schaltfläche Job jetzt ausführen aus. スクリーンショット 2017-06-23 12.03.11.png

Bei Erfolg wird ein solches Bild angezeigt. スクリーンショット 2017-06-23 12.03.55.png

Überprüfen Sie die Ausführungsdetails

Wenn Sie sich den Knoten auf der Registerkarte "Bericht" ansehen, können Sie sehen, dass das von Ihnen eingegebene Echo verarbeitet wird. スクリーンショット 2017-06-23 12.39.37.png

Periodische Jobausführung

Öffnet den Jobbearbeitungsbildschirm Menü Jobs ⇒ Bearbeiten Sie diesen Job.

スクリーンショット 2017-06-23 12.41.02.png

Zeitplan so einstellen, dass er wiederholt ausgeführt wird?

Ändern Sie im Jobeinstellungsbildschirm "Zeitplan für wiederholte Ausführung" in "Ja" und legen Sie fest.

スクリーンショット 2017-06-23 13.03.13.png

Es ist ziemlich intuitiv oder in Ordnung, wenn Sie es so einstellen können, wie Sie es sehen.

スクリーンショット 2017-06-23 13.04.15.png

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.

Melden Sie sich beim Server an und führen Sie den Vorgang aus

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.

Vorbereitung

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.

Knoten hinzufügen

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

Satz privater Schlüssel

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.

Überprüfen Sie die Standardeinstellung für den privaten Schlüssel

Klicken Sie auf dem Projektstartbildschirm auf die Schaltfläche Konfigurieren. スクリーンショット 2017-06-23 22.13.32.png

Klicken Sie auf die Schaltfläche Einfache Konfiguration. スクリーンショット 2017-06-23 22.14.32.png

Wenn Sie den Standardknoten-Executor überprüfen スクリーンショット 2017-06-23 22.15.43.png

/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 /.

Kopie des privaten Schlüssels

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

Ändern Sie die Einstellungen der Projektschlüssel

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. スクリーンショット 2017-06-23 22.25.47.png

Verarbeitung für die Ausführung des Remote-Servers hinzugefügt

Ö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.

スクリーンショット 2017-06-23 22.29.29.png

Nach dem Speichern sollte es sich im folgenden Zustand befinden. スクリーンショット 2017-06-23 22.30.15.png

Knoteneinstellungen

Wenn Sie "Versand an Knoten" auswählen und "Remotehost" in "Knotenfilter" eingeben, werden die konfigurierten Knoten als Kandidaten angezeigt.

スクリーンショット 2017-06-23 22.31.35.png

Drücken Sie nach dem Einrichten auf diesen Punkt Speichern, um zu speichern.

Bestätigen Sie die Ausführung des Remote-Hosts

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. スクリーンショット 2017-06-23 22.36.23.png

abschließend

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

De-cron! Erstellen Sie mit Rundeck einen Job Scheduler
Erstellen eines Java-Projekts mit Gradle
Erstellen Sie mit Docker eine Node.js-Umgebung
Erstellen Sie mit Pleiades 4.8 eine Tomcat 8.5-Umgebung
Erstellen Sie eine Webanwendung mit Javalin
Erstellen Sie mit Docker eine PureScript-Entwicklungsumgebung
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
[Win10] Erstellen Sie eine JSF-Entwicklungsumgebung mit NetBeans
Erstellen Sie ein WEB-System mit Spring + Doma + H2DB
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Senden Sie einen Job an AWS Batch mit Java (Eclipse)
Erstellen Sie ein WEB-System mit Spring + Doma + H2DB + Thymeleaf
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Erstellen Sie ein WEB-System mit Spring + Doma + H2DB Part 2
Java baut ein Dreieck
Baue Growai mit Centos7
Erstellen Sie Java mit Wercker
Bazel mit Alpen bauen
Erstellen Sie mit IntelliJ IDEA eine Entwicklungsumgebung "Spring Thorough Introduction"
Hinweise zum Erstellen von Jitsi Meet on Azure mit Docker-Compose
Erstellen Sie mit VirtualBox eine virtuelle CentOS 8-Umgebung auf Ihrem Mac