Gestion des tâches planifiées eole-schedule
- Présentation
- Gestion des tâches planifiées
- Gestion des tâches uniques (once)
- Gestion des mises à jour avec Creole et eole-schedule
- Forcer l'exécution des tâches planifiées
- Lire les journaux de l'exécution des tâches planifiées
- Comment changer le jour de mise à jour d'un serveur EOLE ?
- Déclarer une nouvelle tâche planifiée
Présentation
Sur les modules EOLE, les tâches planifiées (comme par exemple les mises à jour, les sauvegardes, la purge de certaines informations, l'exportation de l'annuaire, des bases de données et des quotas disque ou encore les mises à des listes noires pour le filtrage proxy) sont gérées par eole-schedule
.
Contrairement à l'utilisation de cron, eole-schedule
permet de maîtriser les tâches planifiées même si la sauvegarde est activée.
Depuis la version 2.5 d'EOLE, eole-schedule
est géré depuis Tiramisu[1].
Le principe est le suivant :
Il existe 4 types de tâches planifiées :
- les tâches journalières : daily ;
- les tâches hebdomadaires : weekly ;
- les tâches mensuelles : monthly ;
- les tâches uniques : once.
Ces tâches sont découpées en pre-sauvegarde et post-sauvegarde.
Si aucune sauvegarde n'est prévue : le cron lance pre puis post à l'heure qui a été tirée au hasard.
Si une sauvegarde est prévue : Bareos lance pre avant la sauvegarde et post à l'heure qui a été tirée au hasard (sauf si celle-ci est prévue avant la sauvegarde ou si la sauvegarde n'est pas terminée, dans ce cas les tâches post sont exécutées après la sauvegarde).
Remarque
Les sauvegardes « post » sont obligatoirement marquées en Full
même si cela ne correspond à rien (pas de sauvegarde, exécution des scripts uniquement). Elles sont réalisées à l'heure qui a été tirée au hasard.
Par contre, les sauvegardes "pre" sont bien lancées à l'heure des sauvegardes définie par l'administrateur.
Gestion des tâches planifiées
Truc & astuceLister ce qui est programmé
# manage_schedule -l
Truc & astuceAjouter une tâche planifiée
# manage_schedule -a daily -s majblacklist
Truc & astuceSupprimer une tâche planifiée
# manage_schedule -d majblacklist
Truc & astuceAppliquer la configuration (génération des liens symboliques)
# manage_schedule --apply
Attention
L'ajout et la suppression n'appliquent pas la configuration. Il faut :
- soit l'appliquer à la main (
manage_schedule --apply
) ; - soit effectuer un
reconfigure
.
Remarque
Si vous venez de créer ou d'installer les fichiers XML décrivant les tâches planifiées que vous souhaitez manipuler, il peut être nécessaire de recharger les dictionnaires au préalable à l'aide de la commande : systemctl restart creoled.service
Gestion des tâches uniques (once)
Les scripts lancés pour une nuit sont gérés totalement différemment et les informations associées ne sont pas conservées dans Tiramisu.
Truc & astuceAjouter une une tâche planifiée unique
# manage_schedule -a once -s majauto
Truc & astuceSupprimer une une tâche planifiée unique
# manage_schedule -d once -s majauto
Remarque
La prise en compte des tâches uniques est instantanée.
L'appel à la méthode --apply n'est donc pas nécessaire.
Gestion des mises à jour avec Creole et eole-schedule
La mise à jour hebdomadaire consiste en un script eole-schedule
nommé majauto
. Il est configuré pour être lancé une fois par semaine (weekly
) après la sauvegarde (post
).
Sa gestion dans les scripts python est facilitée par la librairie creole.maj
.
Truc & astuceSavoir quand est prévue la mise à jour
# python3 -c "from creole import maj; print(maj.get_maj_day())"
Truc & astuceActiver/désactiver la mise à jour hebdomadaire
Activation de la mise à jour hebdomadaire :
# manage_schedule -a weekly -s majauto
# manage_schedule --apply
ou :
# python3 -c "from creole import maj; maj.enable_maj_auto(); print(maj.maj_enabled())"
Désactivation de la mise à jour hebdomadaire :
# manage_schedule -d majauto
# manage_schedule --apply
ou :
# python3 -c "from creole import maj; maj.disable_maj_auto(); print(maj.maj_enabled())"
Attention
Si la fréquence des tâches Schedule
est personnalisée dans l'interface de configuration du module, c'est cette dernière qui prévaut et l'activation/désactivation de la mise à jour hebdomadaire via l'EAD ou la commande manage_schedule n'est plus possible.
Forcer l'exécution des tâches planifiées
Il est possible de forcer l'exécution des tâches planifiées avec la commande /usr/share/eole/schedule/schedule cron.
root@amon:~# /usr/share/eole/schedule/schedule cron
Démarrage de pre schedule daily
pre schedule daily accompli
Démarrage de post schedule daily
. Test de http://eole.orion.education.fr/maj/blacklists => Ok
Téléchargement des bases
Rien à faire pour blacklists.tar.gz
Rien à faire pour le fichier weighted
eole-schedule - run-parts: executing /usr/share/eole/schedule/daily/post/majblacklist daily
post schedule daily accompli
Démarrage de pre schedule once
pre schedule once accompli
Démarrage de post schedule once
post schedule once accompli
root@amon:~#
Lire les journaux de l'exécution des tâches planifiées
Les journaux de l'exécution des tâches planifiées se trouvent dans le répertoire /var/log/rsyslog/local/eole-schedule/
.
Comment changer le jour de mise à jour d'un serveur EOLE ?
Le jour tiré au hasard pour les mises à jour ne me convient pas et je souhaiterais le changer.
root@eole:~# manage_schedule -l
Tâches planifiées EOLE :
* les tâches hebdomadaires se feront le vendredi à 05:35 (hors sauvegarde)
- après sauvegarde
+ Mise à jour du serveur (majauto)
root@eole:~#
Truc & astuce
Une solution consiste à supprimer le fichier de configuration /etc/eole/extra/schedule/config.eol
.
root@eole:~# rm /etc/eole/extra/schedule/config.eol
rm : supprimer fichier '/etc/eole/extra/schedule/config.eol' ? y
root@eole:~# manage_schedule -l
Tâches planifiées EOLE :
* les tâches hebdomadaires se feront le jeudi à 04:12 (hors sauvegarde)
- après sauvegarde
+ Mise à jour du serveur (majauto)
root@eole:~#
À partir d'EOLE 2.7.0, il est possible de fixer le jour et l'heure de la mise à jour hebdomadaire à l'aide de la commande CreoleSet
.
Truc & astuce
Pour paramétrer la mise à jour hebdomadaire le mercredi matin à 3h30, il faut exécuter les commandes suivantes :
root@eole:~# CreoleSet .schedule.schedule.weekday 3
root@eole:~# CreoleSet .schedule.schedule.hour 3
root@eole:~# CreoleSet .schedule.schedule.minute 30
Le jour choisi devra cependant être différent de celui choisi pour le "Jour des tâches mensuelles la première semaine du mois" (.schedule.schedule.monthday
).
Déclarer une nouvelle tâche planifiée
Les tâches eole-schedule
se composent de deux éléments :
- un fichier XML décrivant la tâche planifiée
- le script à exécuter
Les fichiers XML décrivant les tâches planifiées ont un format proche de celui des dictionnaires[4] Creole.
Exemple
Exemple du fichier : /usr/share/eole/creole/extra/schedule/01_majauto.xml
<creole>
<variables>
<family name='majauto'>
<variable name="description" type="string"><value>Mise à jour du serveur</value></variable>
<variable name="day" type="schedule"><value>weekly</value></variable>
<variable name="mode" type="schedulemod"><value>post</value></variable>
</family>
</variables>
</creole>
Le nom du script à exécuter doit correspondre exactement au nom de la famille : majauto
, dans l'exemple.
Le script doit être exécutable et sans extension. Il doit être placé dans le répertoire /usr/share/eole/schedule/scripts
.
C'est eole-schedule
qui se charge de créer des liens symboliques en fonction de la planification souhaitée.