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 à 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 :

  • si aucune sauvegarde n'est prévue, c'est cron[2] qui lance eole-schedule ;
  • si une sauvegarde est prévue, c'est Bareos[3] qui lance eole-schedule.

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.

1
root@amon:~# /usr/share/eole/schedule/schedule cron
2
Démarrage de pre schedule daily
3
pre schedule daily accompli
4
Démarrage de post schedule daily
5
.  Test de http://eole.orion.education.fr/maj/blacklists => Ok
6
Téléchargement des bases
7
Rien à faire pour blacklists.tar.gz
8
Rien à faire pour le fichier weighted
9
eole-schedule - run-parts: executing /usr/share/eole/schedule/daily/post/majblacklist daily
10
post schedule daily accompli
11
Démarrage de pre schedule once
12
pre schedule once accompli
13
Démarrage de post schedule once
14
post schedule once accompli
15
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.

1
root@eole:~# manage_schedule -l
2
Tâches planifiées EOLE :
3
 * les tâches hebdomadaires se feront le vendredi à 05:35 (hors sauvegarde)
4
  - après sauvegarde
5
   + Mise à jour du serveur (majauto)
6
root@eole:~#

Truc & astuce

Une solution consiste à supprimer le fichier de configuration /etc/eole/extra/schedule/config.eol.

1
root@eole:~# rm /etc/eole/extra/schedule/config.eol
2
rm : supprimer fichier '/etc/eole/extra/schedule/config.eol' ? y
3
root@eole:~# manage_schedule -l
4
Tâches planifiées EOLE :
5
 * les tâches hebdomadaires se feront le jeudi à 04:12 (hors sauvegarde)
6
  - après sauvegarde
7
   + Mise à jour du serveur (majauto)
8
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 :

1
root@eole:~# CreoleSet .schedule.schedule.weekday 3
2
root@eole:~# CreoleSet .schedule.schedule.hour 3
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

1
<?xml version="1.0" encoding="utf-8"?>
2
3
<creole>
4
    <variables>
5
        <family name='majauto'>
6
            <variable name="description" type="string"><value>Mise à jour du serveur</value></variable>
7
            <variable name="day" type="schedule"><value>weekly</value></variable>
8
            <variable name="mode" type="schedulemod"><value>post</value></variable>
9
        </family>
10
    </variables>
11
</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.