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.
Über das Projekt

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

Installieren
ansible-galaxy install notmycloud.systemd_unit
GitHub Repository
Lizenz
mit
Downloads
338
Besitzer