rougail/doc/service
2022-11-02 22:52:50 +01:00
..
file.md dictionary can be a YAML file 2022-11-02 22:52:50 +01:00
ip.md dictionary can be a YAML file 2022-11-02 22:52:50 +01:00
override.md dictionary can be a YAML file 2022-11-02 22:52:50 +01:00
README.md dictionary can be a YAML file 2022-11-02 22:52:50 +01:00

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 version="0.10">
  <services>
    <service name="squid"/>
  </services>
</rougail>

En YAML :

version: '0.10'
services:
- service:
  - name: squid

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"/>

En YAML :

- 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"/>

En YAML :

- 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"/>

En YAML :

- 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"/>

En YAML :

- 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 :

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

En YAML :

- service:
  - name: test
    disabled: 'True'

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>

En YAML :

services:
- service:
  - name: test
    servicelist: test
variables:
- variable:
    name: condition
    type: boolean
constraints:
- condition:
    name: disabled_if_in
    source: condition
    param:
    - text: 'False'
    target:
    - type: servicelist
      text: test

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éer le fichier de service et ne pas faire de lien symbolique, il faut utiliser l'attribut undisable :

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

En YAML :

- service:
  - name: test
    disabled: 'True'
    undisable: 'True'