notmycloud.systemd_unit
Ansible Systemd-Einheit
Beschreibung
Generieren und Konfigurieren von Systemd-Einheitsdateien sowohl global als auch für verbleibende Benutzer.
Allgemeine Verwendung
Benötigt einfach das Wörterbuch systemd_units
.
Jeder Schlüssel unter systemd_units
steht für einen Benutzernamen, root
konfiguriert Systemeinheiten in /etc/systemd/system
.
Unter jedem Benutzernamen geben Sie an, ob der Benutzer verbleiben darf, Standard ist Ja.
Dann fügen Sie den Einheitstyp hinzu: unit
, timer
, mount
, usw...
Für jeden Einheitstyp fügen Sie die Konfiguration für die Einheit hinzu.
Einheitendefinition
Der Schlüssel config
enthält die INI-Stil-Konfiguration für die Einheitendatei. Die Schlüssel sind bei den Optionen der Einheitendatei groß- und kleinschreibungsempfindlich, diese Methode ermöglicht es Ihnen, jeden Abschnitt und jede Option für die Einheitendatei zu definieren.
Optionen können als Array definiert werden, um mehr als einmal eingegeben zu werden, ohne sich gegenseitig zu überschreiben.
Diese Rolle wird vorhandene Einheitendateien überschreiben!
Einheit Optionen
Die folgenden Optionen können pro Einheitendefinition festgelegt werden:
- enabled: setzt die Einheit so, dass sie beim Booten aktiviert wird
- state: jeder gültige Statuswert, Standard ist gestartet
- restart_on_change: startet die Einheit neu, wenn wir Änderungen an der Einheitendefinition vornehmen, Standard ist Ja
- backup_before_write: erstellt ein einzelnes .bak der Einheit, bevor wir unsere Definition schreiben, Standard ist Ja
- filepath: ermöglicht es Ihnen, den Standardpfad der Einheitendatei zu überschreiben. Standardmäßig entweder /etc/systemd/system für root oder ~/.config/systemd/user für Benutzer
---
systemd_units:
BENUTZERNAME: # Benutzername von root behandelt Systemeinheit in /etc/systemd/system, andere Benutzer behandeln ~/.config/systemd/user
enable_linger: # Standard ist Ja
EINHEITSERWEITERUNG: # service, target, socket, usw...
EINHEITSNAME: # Dateiname der Einheit
config: # Enthält die Optionen, die die Einheitendatei ausmachen
ABSCHNITT: # Unit, Service, Install, usw...
OPTION: # Kann entweder OPTION=Wert oder OPTION=ARRAY für Optionen sein, die mehrfach aufgeführt werden können.
options: # Optionen, die für die Einheit gelten, die jedoch nicht in die Einheitendatei eingegeben werden
enabled: # Standard ist Ja
state: # Standard ist gestartet, Auswahlmöglichkeiten: neu geladen; neu gestartet; gestartet; gestoppt.
restart_on_change: # Standard ist Ja
backup_before_write: # Standard ist Ja
filepath: Standardmäßig entweder /etc/systemd/system für root oder ~/.config/systemd/user für Benutzer
Beispiel: Logrotate
Datei: /usr/lib/systemd/system/logrotate.service
[Unit]
Description=Protokolldateien rotieren
Documentation=man:logrotate(8) man:logrotate.conf(5)
ConditionACPower=true
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
# Leistungsoptionen
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7
# Sicherheitsoptionen
# Details: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
# Kein ProtectHome für Benutzerverzeichnisse-Logs
# Kein PrivateNetwork für E-Mail-Zustellungen
# Kein ProtectKernelTunables für Arbeit mit SELinux und systemd älter als 235
# Kein MemoryDenyWriteExecute für gzip auf i686
PrivateDevices=true
PrivateTmp=true
ProtectControlGroups=true
ProtectKernelModules=true
ProtectSystem=full
RestrictRealtime=true
Datei: /usr/lib/systemd/system/logrotate.timer
[Unit]
Description=Tägliche Rotation der Protokolldateien
Documentation=man:logrotate(8) man:logrotate.conf(5)
[Timer]
OnCalendar=täglich
AccuracySec=12h
Persistent=true
[Install]
WantedBy=timers.target
Variable zur Konfiguration: (HINWEIS: Wir schreiben keine Kommentarzeilen!)
systemd_units:
root:
service:
logrotate:
config:
Unit:
Description: Protokolldateien rotieren
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: Tägliche Rotation der Protokolldateien
Documentation: 'man:logrotate(8) man:logrotate.conf(5)'
Timer:
OnCalendar: täglich
AccuracySec: 12h
Persistent: 'true'
Install:
WantedBy: timers.target
options:
filepath: /usr/lib/systemd/system/logrotate.timer
Unterstützung
Für Unterstützung erstellen Sie bitte ein Problem und geben Sie die folgenden Elemente an:
- Beispielaufgabe/-spielbuch, um Ihr Problem zu replizieren
- Ergebnisdatei, die erstellt wird.
- Wenn Sie eine vorhandene Datei ändern, geben Sie bitte auch die unveränderte Version an.
Generate and configure Systemd Unit files both globally and for lingering users.
ansible-galaxy install notmycloud.systemd_unit