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 :
2022-11-03 22:17:43 +01:00
```xml
2021-11-24 18:06:09 +01:00
<?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 :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
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
2022-03-05 10:57:55 +01:00
- timer : tâche planifié pour systemd
2021-11-24 18:06:09 +01:00
2022-11-03 22:17:43 +01:00
```xml
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 :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- 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.
2022-11-03 22:17:43 +01:00
```xml
2021-11-24 18:06:09 +01:00
< service name = "squid" target = "multi-user" / >
```
2022-11-02 22:52:50 +01:00
En YAML :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- 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 :
2022-11-10 22:58:24 +01:00
- cheetah
- jinja
2021-11-24 18:06:09 +01:00
2022-11-03 22:17:43 +01:00
```xml
2022-11-10 22:58:24 +01:00
< service name = "dev-disk-by \x2dpartlabel-swap" type = "swap" engine = "cheetah" />
2021-11-24 18:06:09 +01:00
```
2022-11-02 22:52:50 +01:00
En YAML :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- service:
- name: dev-disk-by\x2dpartlabel-swap
type: swap
2022-11-10 22:58:24 +01:00
engine: cheetah
2022-11-02 22:52:50 +01:00
```
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 :
2022-11-03 22:17:43 +01:00
```xml
2021-11-24 18:06:09 +01:00
< service name = "ldap_client" manage = "False" / >
```
2022-11-02 22:52:50 +01:00
En YAML :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- 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-03 22:17:43 +01:00
```xml
2022-11-02 22:52:50 +01:00
< service name = "test" disabled = "True" / >
```
En YAML :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- 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 :
2022-11-03 22:17:43 +01:00
```xml
2021-11-24 18:06:09 +01:00
< 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 :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
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
2022-11-03 22:17:43 +01:00
```xml
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 :
2022-11-03 22:17:43 +01:00
```yml
2022-11-02 22:52:50 +01:00
- service:
- name: test
2022-11-03 22:16:52 +01:00
disabled: true
undisable: true
2022-11-02 22:52:50 +01:00
```