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.
Generate and configure Systemd Unit files both globally and for lingering users.
ansible-galaxy install notmycloud.systemd_unit