notmycloud.systemd_unit

Unité Systemd Ansible

Description

Générez et configurez des fichiers d'unité Systemd à la fois globalement et pour les utilisateurs persistants.

Utilisation Générale

Cela nécessite simplement le dictionnaire systemd_units. Chaque clé sous systemd_units représente un nom d'utilisateur, root configurera les unités système dans /etc/systemd/system. Sous chaque nom d'utilisateur, spécifiez si l'utilisateur doit être autorisé à rester actif, par défaut c'est oui. Ensuite, incluez le type d'unité : unit, timer, mount, etc... Pour chaque type d'unité, incluez la configuration pour l'unité.

Définition de l'Unité

La clé config contient la configuration de style INI pour le fichier d'unité. Les clés sont sensibles à la casse pour les options des fichiers d'unité, cette méthode vous permet de définir n'importe quelle section et option pour le fichier d'unité. Les options peuvent être définies sous forme de tableau pour être saisies plusieurs fois sans se remplacer.

Ce rôle va écraser les fichiers d'unité existants !

Options d'Unité

Les options suivantes peuvent être définies par définition d'unité :

  • enabled : mettra l'unité en état d'activation au démarrage
  • state : toute valeur d'état valide, par défaut à démarré
  • restart_on_change : redémarrera l'unité si nous apportons des modifications à la définition de l'unité, par défaut à oui
  • backup_before_write : créera une seule sauvegarde .bak de l'unité avant d'écrire notre définition, par défaut à oui
  • filepath : vous permet de remplacer le chemin par défaut du fichier d'unité. Par défaut, c'est soit /etc/systemd/system pour root, soit ~/.config/systemd/user pour les utilisateurs
---
systemd_units:
  NOM_UTILISATEUR: # Le nom d'utilisateur root gérera l'unité système dans /etc/systemd/system, les autres utilisateurs gèreront ~/.config/systemd/user
    enable_linger: # Par défaut à oui
    EXTENSION_UNITE: # service, target, socket, etc...
      NOM_UNITE: # nom de fichier de l'unité
        config: # Contient les options qui composent le fichier d'unité
          SECTION:  # Unité, Service, Installation, etc...
            OPTION: # Peut être soit OPTION=valeur ou OPTION=TABLEAU pour les options pouvant être listées plusieurs fois.
        options: # Options qui s'appliquent à l'unité, mais ne vont pas dans le fichier d'unité
          enabled: # Par défaut à oui
          state: # Par défaut à démarré, choix : rechargé; redémarré; démarré; arrêté.
          restart_on_change: # Par défaut à oui
          backup_before_write: # Par défaut à oui
          filepath: Par défaut soit à /etc/systemd/system pour root soit à ~/.config/systemd/user pour les utilisateurs

Exemple : Logrotate

Fichier : /usr/lib/systemd/system/logrotate.service

[Unit]
Description=Faire tourner les fichiers journaux
Documentation=man:logrotate(8) man:logrotate.conf(5)
ConditionACPower=true

[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.conf

# options de performance
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7

# options de sécurisation
#  détails : https://www.freedesktop.org/software/systemd/man/systemd.exec.html
#  pas de ProtectHome pour les journaux des répertoires utilisateur
#  pas de PrivateNetwork pour la livraison du courrier
#  pas de ProtectKernelTunables pour faire fonctionner SELinux avec systemd plus ancien que 235
#  pas de MemoryDenyWriteExecute pour gzip sur i686
PrivateDevices=true
PrivateTmp=true
ProtectControlGroups=true
ProtectKernelModules=true
ProtectSystem=full
RestrictRealtime=true

Fichier : /usr/lib/systemd/system/logrotate.timer

[Unit]
Description=Rotation quotidienne des fichiers journaux
Documentation=man:logrotate(8) man:logrotate.conf(5)

[Timer]
OnCalendar=daily
AccuracySec=12h
Persistent=true

[Install]
WantedBy=timers.target

Variable à configurer : (REMARQUE : Nous n'écrivons pas de lignes de commentaire !)

systemd_units:
  root:
    service:
      logrotate:
        config:
          Unit:
            Description: Faire tourner les fichiers journaux
            Documentation: 'man:logrotate(8) man:logrotate.conf(5)'
            ConditionACPower: 'true'
          Service:
            Type: oneshot
            ExecStart: /usr/sbin/logrotate /etc/logrotate.conf
            Nice: 19
            IOSchedulingClass: best-effort
            IOSchedulingPriority: 7
            PrivateDevices: 'true'
            PrivateTmp: 'true'
            ProtectControlGroups: 'true'
            ProtectKernelModules: 'true'
            ProtectSystem: full
            RestrictRealtime: 'true'
        options:
          enabled: false
          filepath: /usr/lib/systemd/system/logrotate.service
    timer:
      logrotate:
        config:
          Unit:
            Description: Rotation quotidienne des fichiers journaux
            Documentation: 'man:logrotate(8) man:logrotate.conf(5)'
          Timer:
            OnCalendar: daily
            AccuracySec: 12h
            Persistent: 'true'
          Install:
            WantedBy: timers.target
        options:
          filepath: /usr/lib/systemd/system/logrotate.timer

Support

Pour le support, veuillez soulever un problème et fournir les éléments suivants :

  • Exemple de tâche/playbook pour reproduire votre problème
  • Fichier résultant qui est créé.
  • Si vous modifiez un fichier existant, veuillez également fournir la version non modifiée.
À propos du projet

Generate and configure Systemd Unit files both globally and for lingering users.

Installer
ansible-galaxy install notmycloud.systemd_unit
Licence
mit
Téléchargements
338
Propriétaire