rougail/doc/service/README.md

3.3 KiB

La gestion d'un service

La base service

Un service est inclut dans un conteneur services.

Cette balise permet de définir tous les éléments (fichier, IP et réécriture) liés à un service ou à démon.

Il faut, à la création du service, préciser son nom :

<?xml version='1.0' encoding='UTF-8'?>
<rougail>
  <services>
    <service name="squid"/>
  </services>
</rougail>

Les types de service

Les services peuvent être de plusieurs type :

  • service (valeur par défaut) : cela signifie que c'est un service systemd qui est activer au démarrage de la machine
  • mount : fichier utilisé par systemd-mount
  • swap : fichier utilisé par systemd-swap
  • timer : tâche planifié pour systemd
<service name="dev-disk-by\x2dpartlabel-swap" type="swap"/>

Les targets de service

Active le service systemd pour une target systemd déterminé. Par défaut, l'activation du service n'est pas gérer par rougail.

<service name="squid" target="multi-user"/>

La génération du fichier service

Le fichier de description du service peut être fourni directement par la distribution GNU/Linux utilisé, mais il peut également être fournit par l'administrateur. Dans ce cas, il est possible de créé un template, dont le nom est obligatoirement la valeur de la balise "name" + "." + la valeur de la base "type".

Deux types de template sont aujourd'hui disponible :

  • creole
  • jinja2
<service name="dev-disk-by\x2dpartlabel-swap" type="swap" engine="creole"/>

Dans ce cas, rougail utilisera le template "dev-disk-by\x2dpartlabel-swap.swap" pour générer le fichier systemd de gestion de ce service.

Le service factice

Un service peut être factice, donc non géré par le système de service du système :

<service name="ldap_client" manage="False"/>

Un service factice est généralement une service qui n'existe pas réellement (par exemple si on configure un client). Il n'est là que pour contenir des fichiers.

Désactiver le service

Il est possible de désactiver un service. Pour cela il faut rajouter l'attribut "disabled" à True :

<services>
  <service name="test" disabled="True"/>
</services>

Dans ce cas, le service et les éléments qu'il compose (fichier, IP et réécriture seront désactivés.

Il est possible de définir une condition de type "disabled_if_in" ou "disabled_if_not_in" sur une balise service :

<services>
  <service name="test" servicelist="test">
  </service>
</services>
<variables>
  <variable name="condition" type="boolean"/>
</variables>
<constraints>
  <condition name="disabled_if_in" source="condition">
    <param>False</param>
    <target type="servicelist">test</target>
  </condition>
</constraints>

Dans ce cas, tous les services et les éléments qu'il compose avec un attribut servicelist à "test" seront désactivés si la variable "condition" est False.

Ne pas désactiver le service dans systemd

La désactivation du service va créé un lien symbolique vers /dev/null.

Si vous ne voulez juste pas créé le fichier de service et ne pas faire de lien symbolique, il faut utiliser l'attribut undisable :

<service name="test" disabled="True" undisable="True"/>