rougail/doc/service/README.md

187 lines
4.1 KiB
Markdown
Raw Normal View History

2021-11-24 18:06:09 +01:00
# La gestion d'un service
2021-02-10 08:19:33 +01:00
2021-11-24 18:06:09 +01:00
## La base service
2021-02-10 08:19:33 +01:00
2021-11-24 18:06:09 +01:00
Un service est inclut dans un conteneur [services](../services.md).
2021-02-10 08:19:33 +01:00
2021-11-24 18:06:09 +01:00
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'?>
2022-11-02 22:52:50 +01:00
<rougail version="0.10">
2021-12-11 16:33:55 +01:00
<services>
<service name="squid"/>
</services>
2021-11-24 18:06:09 +01:00
</rougail>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
version: '0.10'
services:
- service:
- name: squid
```
2021-11-24 18:06:09 +01:00
## 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
2021-11-24 18:06:09 +01:00
```
<service name="dev-disk-by\x2dpartlabel-swap" type="swap"/>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
- service:
- name: dev-disk-by\x2dpartlabel-swap
type: swap
```
2021-11-24 18:06:09 +01:00
## 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"/>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
- service:
- name: squid
target: multi-user
```
2021-11-24 18:06:09 +01:00
## 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"/>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
- service:
- name: dev-disk-by\x2dpartlabel-swap
type: swap
engine: creole
```
2021-11-24 18:06:09 +01:00
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"/>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
- service:
- name: ldap_client
2022-11-03 22:16:52 +01:00
manage: false
2022-11-02 22:52:50 +01:00
```
2021-11-24 18:06:09 +01:00
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 :
```
2022-11-02 22:52:50 +01:00
<service name="test" disabled="True"/>
```
En YAML :
```
- service:
- name: test
2022-11-03 22:16:52 +01:00
disabled: true
2021-11-24 18:06:09 +01:00
```
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>
2021-12-11 16:33:55 +01:00
<service name="test" servicelist="test">
</service>
2021-11-24 18:06:09 +01:00
</services>
<variables>
2021-12-11 16:33:55 +01:00
<variable name="condition" type="boolean"/>
2021-11-24 18:06:09 +01:00
</variables>
<constraints>
2021-12-11 16:33:55 +01:00
<condition name="disabled_if_in" source="condition">
<param>False</param>
<target type="servicelist">test</target>
</condition>
2021-11-24 18:06:09 +01:00
</constraints>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
services:
- service:
- name: test
servicelist: test
variables:
- variable:
name: condition
type: boolean
constraints:
- condition:
name: disabled_if_in
source: condition
param:
2022-11-03 22:16:52 +01:00
- text: false
2022-11-02 22:52:50 +01:00
target:
- type: servicelist
text: test
```
2021-11-24 18:06:09 +01:00
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.
2021-11-26 22:46:34 +01:00
## Ne pas désactiver le service dans systemd
La désactivation du service va créé un lien symbolique vers /dev/null.
2022-10-01 22:27:22 +02:00
Si vous ne voulez juste pas créer le fichier de service et ne pas faire de lien symbolique, il faut utiliser l'attribut undisable :
2021-11-26 22:46:34 +01:00
```
<service name="test" disabled="True" undisable="True"/>
```
2022-11-02 22:52:50 +01:00
En YAML :
```
- service:
- name: test
2022-11-03 22:16:52 +01:00
disabled: true
undisable: true
2022-11-02 22:52:50 +01:00
```