108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
# La gestion d'un service
|
|
|
|
## La base service
|
|
|
|
Un service est inclut dans un conteneur [services](../services.md).
|
|
|
|
Cette balise permet de définir tous les éléments ([fichier](file.md), [IP](ip.md) et [réécriture](override.md)) 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](file.md), [IP](ip.md) et [réécriture](override.md) seront désactivés.
|
|
|
|
Il est possible de définir une [condition](../condition/README.md) 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"/>
|
|
```
|