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.
Rundeck ne fonctionnera pas sans Java. Si Java n'est pas installé, installez-le.
yum install java-1.8.0
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck
Ceci termine l'installation.
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
Définissons le côté serveur et la sécurité du réseau afin qu'il puisse communiquer avec 4440
Nom d'utilisateur: admin Mot de passe: admin
Vous pouvez y accéder avec.
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
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
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-``.
Ici, ajoutez l'utilisateur poweruser '' équivalent à admin et le mot de passe
mypassword``.
java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password poweruser mypassword
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
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.
Reflète les paramètres.
systemctl restart rundeckd
Vous pouvez créer un projet avec juste un nom pour le moment
Créez une tâche à partir du bouton Créer une tâche.
Cette fois, j'ai sélectionné Script et rempli `` echo '' c'est TEST ''
Après la saisie, appuyez sur le bouton Enregistrer, puis sur le bouton Créer du travail.
Exécutez le travail enregistré à partir du bouton Exécuter le travail maintenant.
En cas de succès, une image comme celle-ci sera affichée.
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.
Ouvre l'écran de modification du travail Menu Jobs ⇒ Modifier ce Job.
À partir de l'écran de réglage de la tâche, changez Planifier pour exécuter à plusieurs reprises? '' Sur
Oui '' et réglez
C'est assez intuitif, ou ce n'est pas grave si vous pouvez le définir comme vous le voyez.
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.
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.
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.
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 à ``
Pour plus de détails, veuillez consulter le site officiel http://rundeck.org/docs/man5/resource-xml.html
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.
Appuyez sur le bouton Configurer depuis l'écran d'accueil du projet.
Appuyez sur le bouton Configuration simple.
Si vous cochez le Default Node Executor
/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 / ''.
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
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é.
Ouvrez le travail et définissez Commande --Exécuter une commande à distance '' de ```Ajouter une étape
de `` Workflow`.
Exécutez `` pwd '' comme test.
Après l'enregistrement, il doit être dans l'état suivant.
Si vous sélectionnez Dispatch to Nodes '' et entrez
remotehost '' dans `` Node Filter '', les nœuds configurés seront affichés comme candidats.
Une fois la configuration terminée, appuyez sur Enregistrer pour enregistrer.
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.
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