Gestion des tâches planifiées eole-schedule
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 à jour 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.
En version 2.4, 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 : Bacula 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 pre 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.
RemarqueDifférences par rapport à Schedule 2.3
La liste des scripts à activer est décrite dans un fichier XML[4] (dictionnaire). Ce système permet de mettre en place des valeurs par défaut. Ainsi, l'activation ou la désactivation d'un script n'est plus réalisée à l'installation du paquet ce qui est à la fois plus simple et plus sûr.
La description n'est plus dans le script. Elle est directement dans le fichier XML.
Les scripts pre/post sont maintenant mélangés dans le répertoire /usr/share/eole/schedule/scripts
.
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 -m post
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
.
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 -m post
Truc & astuceSupprimer une une tâche planifiée unique
# manage_schedule -d once -s majauto -m post
Remarque
La prise en compte des tâches uniques est instantanée.
L'appel à la méthode --apply
n'est donc pas nécessaire.
Exemple de fichier XML
Les fichiers XML décrivant les tâches planifiées ont un format proche de celui des dictionnaires[5] 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>
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
# python -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 -m post
ou :
# python -c "from creole import maj; maj.enable_maj_auto(); print maj.maj_enabled()"
Désactivation de la mise à jour hebdomadaire :
# manage_schedule -d majauto
ou :
# python -c "from creole import maj; maj.disable_maj_auto(); print maj.maj_enabled()"
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/
.