[JAVA] Dé-cron! Créez un planificateur de tâches avec Rundeck

introduction

J'ai dû créer un processus à exécuter périodiquement pour plusieurs serveurs existants, et je pensais qu'il n'y aurait pas d'option pour écrire cron en 2017, et à la suite de la prise en compte de certains planificateurs de tâches, je me suis installé sur Rundeck, alors je l'ai configuré ~ C'est un mémo jusqu'à exécution régulière.

L'environnement que j'ai essayé est CentOS 7.

Installation

Installation de Java

Rundeck ne fonctionnera pas sans Java. Si Java n'est pas installé, installez-le.

yum install java-1.8.0

Installez Rundeck

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

Ceci termine l'installation.

Paramètres de Rundeck

Changement d'URL

Puisque nous voulons accéder à partir d'un navigateur local, changez-le en une adresse IP globale ou un domaine accessible de l'extérieur.

vi /etc/rundeck/rundeck-config.properties

rundeck-config.properties


grails.serverURL=http://Domaine OU IP:4440

Ouvrir le port 4440

Définissons le côté serveur et la sécurité du réseau afin qu'il puisse communiquer avec 4440

paramètres de l'utilisateur administrateur

Paramètres utilisateur par défaut

Nom d'utilisateur: admin Mot de passe: admin

Vous pouvez y accéder avec.

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

Ce paramètre est écrit dans `` / etc / rundeck / realm.properties '', mais le mot de passe est également clair et ce n'est pas du tout bon pour la sécurité.

realm.properties


admin:admin,user,admin,architect,deploy,build

Changer le mot de passe administrateur et convertir en md5

Tout d'abord, changez ce mot de passe en texte brut et changez la description du fichier de paramètres en md5.

Dans cet exemple, newadmin est défini comme nouveau mot de passe.

sudo java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password admin newadmin

Ensuite, la valeur de hachage suivante sera générée

OBF:1x151t331u2a1y7z1b301t121x1h
MD5:b0a24b98c089b3b0f5d4174420cebe0c
CRYPT:advDltGLaH7Bo

Copiez la partie entière de MD5: b0a24b98c089b3b0f5d4174420cebe0c ici.

Ouvrez ensuite `` / etc / rundeck / realm.properties '' et apportez les modifications suivantes.

realm.properties


admin:MD5:b0a24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build

À propos de ce script

Il y a un fichier .jar dans / var / lib / rundeck / bootstrap / '', mais le nombre semble légèrement différent selon la version de Rundeck. Essayez cd / var / lib / rundeck / bootstrapet utilisez le nom de fichier du fichier .jar qui commence par jetty-all-``.

Ajouter un nouvel utilisateur

Ici, ajoutez l'utilisateur poweruser '' équivalent à admin et le mot de passe mypassword``.

Commande d'ajout d'utilisateur

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

Ajouté à realm.properties

Le hachage est généré comme dans le cas de admin, donc copiez-le. Ajoutez le paramètre poweruser à `` / etc / rundeck / realm.properties '' ainsi qu'à admin comme indiqué ci-dessous.

realm.properties


# admin
admin:MD5:b0a24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build
# poweruser
poweruser:MD5:abc24b98c089b3b0f5d4174420cebe0c,user,admin,architect,deploy,build

Ajouter une politique

Les paramètres d'autorisation de l'utilisateur, etc. sont écrits dans ce fichier `ʻacl policy``.

Si vous faites cd / etc / rundeck && ll, vous trouverez des fichiers tels que aclpolicy pour l'utilisateur admin et `` properties '', qui ne seront pas modifiés cette fois.

Cette fois, nous allons créer un utilisateur avec les mêmes privilèges que `ʻadmin``, donc copiez la politique d'admin.

cd /etc/rundeck
cp admin.aclpolicy poweruser.aclpolicy

Ceci termine les nouveaux paramètres utilisateur.

Redémarrer le rundeck

Reflète les paramètres.

systemctl restart rundeckd

Ajouter un projet

Paramètres minimaux

Vous pouvez créer un projet avec juste un nom pour le moment

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

Créer un emploi

Créez une tâche à partir du bouton Créer une tâche. スクリーンショット 2017-06-23 11.57.54.png

Ajouter le nom et la description du poste

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

Ajouter un workflow

Cette fois, j'ai sélectionné Script et rempli `` echo '' c'est TEST ''

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

Après la saisie, appuyez sur le bouton Enregistrer, puis sur le bouton Créer du travail.

Exécutez manuellement le travail

Exécutez le travail enregistré à partir du bouton Exécuter le travail maintenant. スクリーンショット 2017-06-23 12.03.11.png

En cas de succès, une image comme celle-ci sera affichée. スクリーンショット 2017-06-23 12.03.55.png

Vérifier les détails de l'exécution

Si vous regardez le Nœud '' dans l'onglet Rapport '', vous pouvez voir que l'écho que vous avez entré est en cours de traitement. スクリーンショット 2017-06-23 12.39.37.png

Exécution périodique des travaux

Ouvre l'écran de modification du travail Menu Jobs ⇒ Modifier ce Job.

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

Configurer le calendrier pour qu'il s'exécute à plusieurs reprises?

À partir de l'écran de réglage de la tâche, changez Planifier pour exécuter à plusieurs reprises? '' Sur Oui '' et réglez

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

C'est assez intuitif, ou ce n'est pas grave si vous pouvez le définir comme vous le voyez.

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

C'est le seul paramètre. Il existe également un mode Crontab, il semble donc pratique lors du portage depuis un Crontab existant.

Une fois le temps défini écoulé, vérifiez s'il peut être exécuté. La méthode de confirmation est la même que pour l'exécution manuelle.

Connectez-vous au serveur et exécutez le processus

Jusqu'à présent, nous avons travaillé sur le serveur sur lequel Rundeck est installé. À partir de là, j'écrirai comment exécuter le traitement en vous connectant à un autre serveur que vous utiliserez réellement.

Préparation

Il est nécessaire de pouvoir effectuer une connexion d'authentification par clé sans mot de passe du serveur sur lequel Rundeck est installé sur le serveur sur lequel vous souhaitez exécuter le processus.

Ajouter un nœud

Malheureusement, l'ajout d'un nœud n'est pas possible à partir de l'interface graphique. Modifiez le fichier de paramètres comme suit. Puisque nous avons créé un projet appelé test '' cette fois, éditez les fichiers suivants./var/rundeck/projects/test/etc/resources.xml``

resources.xml


<?xml version="1.0" encoding="UTF-8"?>
<project>
#Paramètres de l'hôte local qui devraient déjà être là
<node name="localhost" description="Rundeck server node" tags="" hostname="localhost" osArch="amd64" osFamily="unix" osName="Linux" osVersion="el7.x86_64" username="rundeck"/>

#Ajoutez ce qui suit
<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>

Ajoutez les paramètres suivants à `` </ projet> ''.

Pour plus de détails, veuillez consulter le site officiel http://rundeck.org/docs/man5/resource-xml.html

Jeu de clés privées

Cette fois, on suppose qu'il existe déjà un utilisateur qui peut se connecter à chaque SSH et qu'il existe une paire de clé privée et de clé publique.

Vérifiez le paramètre de clé privée par défaut

Appuyez sur le bouton Configurer depuis l'écran d'accueil du projet. スクリーンショット 2017-06-23 22.13.32.png

Appuyez sur le bouton Configuration simple. スクリーンショット 2017-06-23 22.14.32.png

Si vous cochez le Default Node Executor スクリーンショット 2017-06-23 22.15.43.png

/var/lib/rundeck/.ssh/id_rsa

Il est devenu. Je pense que la même valeur est définie pour SCP '' de Default Node File Copier ''.

Cette fois, nous allons définir la clé privée existante sous ce `` / var / lib / rundeck / .ssh / ''.

Copie de la clé privée

On suppose qu'il y a déjà un utilisateur nommé remoteuser, il y a ʻid_rsa`` et ʻauthorized_keys`` est défini sur le serveur connecté.

Copiez la clé privée de remoteuser sous / var / lib / rundeck / .ssh '' et changez le groupe et le propriétaire en rundeck``

cp /home/remoteuser/.ssh/id_rsa /var/lib/rundeck/.ssh/remoteuser_id_rsa
chown rundeck remoteuser_id_rsa
chgrp rundeck remoteuser_id_rsa

Modifier les paramètres de clé de projet

Suivez la même procédure que la précédente `` Vérifier le paramètre de clé privée par défaut '' pour passer à l'écran de configuration.

Réglez la clé de l'`` utilisateur distant '' copié. スクリーンショット 2017-06-23 22.25.47.png

Traitement ajouté pour l'exécution du serveur distant

Ouvrez le travail et définissez Commande --Exécuter une commande à distance '' de ```Ajouter une étape de `` Workflow`.

Exécutez `` pwd '' comme test.

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

Après l'enregistrement, il doit être dans l'état suivant. スクリーンショット 2017-06-23 22.30.15.png

Paramètres du nœud

Si vous sélectionnez Dispatch to Nodes '' et entrez remotehost '' dans `` Node Filter '', les nœuds configurés seront affichés comme candidats.

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

Une fois la configuration terminée, appuyez sur Enregistrer pour enregistrer.

Confirmer l'exécution de l'hôte distant

Exécutez-le comme précédemment, et si Réussi '' s'affiche, il réussit. En cas d'échec, Échec '' s'affichera comme indiqué ci-dessous, veuillez donc reconfirmer les paramètres. スクリーンショット 2017-06-23 22.36.23.png

en conclusion

Vous pouvez désormais exécuter des tâches régulièrement et sur des hôtes distants. cron peut être facilement exécuté avec cron, mais c'est très bien s'il y a des paramètres que vous ne savez pas qui a ajouté dans quel but, une erreur se produit, ou si vous écrivez des paramètres pour chacun lorsqu'il y a plusieurs serveurs comme cette fois. Il existe divers problèmes tels que la douleur et les erreurs d'exécution difficiles.

Je pense que c'est un peu différent de dire que Rundeck résout tout, mais au moins c'est souvent beaucoup plus clair que de l'exécuter avec cron, donc je pense à migrer progressivement le cron existant restant vers celui-ci également. ..

De plus, quand je le faisais fonctionner, je sentais qu'il était proche de Jenkins.

Recommended Posts

Dé-cron! Créez un planificateur de tâches avec Rundeck
Construire un projet Java avec Gradle
Créer un environnement Node.js avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Créer une application Web avec Javalin
Créer un environnement de développement PureScript avec Docker
Créer un environnement de développement Wordpress avec Docker
Créer un environnement Laravel / Docker avec VSCode devcontainer
Créez rapidement un environnement de développement WordPress avec Docker
[Win10] Créer un environnement de développement JSF avec NetBeans
Construisez un système WEB avec Spring + Doma + H2DB
Créer un environnement de développement Java avec VS Code
Soumettre une tâche à AWS Batch avec Java (Eclipse)
Construisez un système WEB avec Spring + Doma + H2DB + Thymeleaf
[Note] Créez un environnement Python3 avec Docker dans EC2
Construisez un système WEB avec Spring + Doma + H2DB Partie 2
java construire un triangle
Construisez Growai avec Centos7
Construire Java avec Wercker
Construisez bazel avec alpin
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
Notes sur la création de Jitsi Meet sur Azure avec docker-compose
Créez un environnement virtuel CentOS 8 sur votre Mac à l'aide de VirtualBox