• Les cookies assurent le bon fonctionnement de nos services. En poursuivant votre navigation, vous acceptez l'utilisation de cookies.

Gestion des services sur EOLE 2.3
EOLE , Technique

La gestion des services, sur EOLE 2.3, a été revue totalement.

Par service, il faut comprendre processus qui s’exécute en arrière-plan au démarrage de la machine.

Le démarrage des services se fait grâce au mécanisme d’Ubuntu. Créole se charge uniquement d’activer ou de désactiver un certain nombre de ces services.

Il existe donc deux types de services :

  • les services non gérés par Créole, ils sont donc activables ou désactivables par l’administration sans modification de la part des outils EOLE ;
  • les services gérés par Créole, qui peuvent être activés ou désactivés suivant le paramétrage de l’utilisateur.
Seuls les services gérés par Créole sont traités dans ce billet.

Créole gère le service sur le serveur maître mais aussi dans les conteneurs.

Dans le dictionnaire, faut utiliser une balise « service » dans la balise conteneur.

Activation et désactivation du service

Par défaut, si la balise est définie, le service est activé.

Pour désactiver un service, il faut utiliser l’attribut « servicelist ». Il fonctionne comme l’attribut « filelist » des templates. Il faut ajouter une condition « hidden_if_in » ou « hidden_if_not_in » sur le « servicelist ».

Niveau de démarrage et d’arrêt

L’ordre de démarrage et d’arrêt des services gérés par Créole est défini directement par Ubuntu. Il est possible de modifier l’ordre avec les attributs « startlevel » ou « stoplevel ».

Par exemple, pour démarrer correctement les trois services de Bacula :

<service startlevel="90">bacula-sd</service>
<service startlevel="91">bacula-fd</service>
<service startlevel="92">bacula-director</service>

Seulement dans le conteneur

Les modules EOLE fonctionnent indifféremment en mode conteneur et en mode non conteneur. Il est possible que des services ne doivent être gérés que dans un des deux modes. Pour cela, il est possible d’utiliser l’attribut « in_conteneur ».

Par exemple, « clamav-daemon » ne doit pas être démarré sur le maître en mode conteneur mais il doit l’être en mode non-conteneur :

<service in_container='False'>clamav-daemon</service>

Méthode

Sous Ubuntu, il y a deux méthodes de démarrage des services :
  • sysvinit : une suite de scripts de démarrage ;
  • upstart : qui remplace le démon init.
Malheureusement, le démarrage, l’arrêt, l’activation et les désactivations de ces services sont complètements différents.

Créole gère donc différemment ces deux types de service.

Pour reconnaître un service géré par upstart, il faut relancer le service de la façon suivante :

/etc/init.d/mysql restart
Si le message suivant apparaît c’est que le service est géré par upstart :
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart mysql
mysql start/running, process 6956
Un troisième type de service « initd » a été introduit pour le service « networking ». En effet, ni la méthode sysvinit, ni la méthode upstart ne permettent de redémarrer le réseau.

La méthode par défaut correspond au démarrage sysvinit.

Pour utiliser upstart il faut ajouter l’attribut method :

<service method='upstart'>mysql</service>

Pseudo terminal pty

Pour avoir un affichage plus agréable, Créole alloue un pseudo terminal pty lors de la relance du service dans le conteneur (option -t à ssh). Malheureusement, certains services n’apprécient pas que ce pseudo terminal se ferme trop rapidement. C’est le cas, par exemple, de slapd. Il faut donc désactiver pty pour ce type de service de la manière suivante :

<service pty= »False »>slapd</service>

Le fichier /etc/eole/init_service.conf

Pour éviter de relire les dictionnaires pour redémarrer, il existe un fichier « cache » /etc/eole/init_service.conf. Ce fichier est regénéré à chaque instance/reconfigure.

Redémarrer un service en python

Sur le maître

#!/usr/bin/env python
from pyeole import service_code
service_code('slapd', 'restart')

Dans un conteneur

#!/usr/bin/env python
from pyeole import service_code
service_code('slapd', 'restart', 'annuaire')

Redémarrer un service en bash

Sur le maître

#!/bin/bash
. /usr/share/eole/FonctionsEoleNg
Service slapd restart

Dans un conteneur

#!/bin/bash
. /usr/share/eole/FonctionsEoleNg
Service slapd restart annuaire

Commentaires

Aucun commentaire pour l'instant, soyez le premier !

Cadoles recrute !

Nous recherchons de nouveaux coopérateurs :