anasbouzid.systemd

Ansible Rolle: systemd

Diese Rolle bietet eine einfache und flexible Möglichkeit, alle systemd-Einheitendateien zu verwalten.

Funktionen

  • Erstellen aller systemd Einheitendateien.
  • Erstellen von Vorlageneinheiten.
  • Alle Einheitendirektiven festlegen.
  • Jede Einheit aktivieren/deaktivieren.
  • Einheiten bei Änderungen neu starten.

Anforderungen

  • Ansible 2.8 oder höher.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml):

systemd_units: []

Eine Liste von Dictionaries. Für jede Einheit müssen Sie einen Namen angeben, alle anderen Schlüssel sind im Syntaxabschnitt unten aufgeführt.

systemd_units_restart_changed: ja

Ob die Einheit bei Dateiänderungen neu gestartet werden soll. Sie können auch den Parameter restart_changed für jede Einheit angeben. Vorlageneinheiten werden immer übersprungen.

systemd_units_enabled: ja

Ob Einheiten beim Booten aktiviert werden sollen. Sie können auch den Parameter enabled für jede Einheit angeben. Vorlageneinheiten werden immer übersprungen.

Syntax

Eine systemd_unit hat alle Parameter des systemd-Moduls plus mehrere Schlüssel, die mit _section enden. Sie können so viele Abschnitte angeben, wie Sie möchten. Jeder Abschnitt ist ein Dictionary von Konfigurationsdirektiven. Wenn kein Abschnitt bereitgestellt wird, wird eine leere Datei erstellt. Dies ist eine effektive Möglichkeit, eine Einheit vollständig zu deaktivieren.

- name: foo.service
  scope: user
  # andere Systemd-Modulparameter...
  Unit_section:
    Description: Foo
  Service_section:
    ExecStart: /usr/sbin/foo-daemon
  Install_section:
    WantedBy: multi-user.target

Die obige Einheit erstellt eine foo.service-Datei mit folgendem Inhalt:

[Unit]
Description=Foo

[Service]
ExecStart=/usr/sbin/foo-daemon

[Install]
WantedBy=multi-user.target

Ein direktiver Schlüssel kann eine Zeichenkette, eine Liste oder ein Dictionary sein, jeder Schlüsseltyp wird wie folgt konvertiert:

ExecStart: "/usr/bin/foo-daemon"
Wants:
  - [email protected]
  - [email protected]
Environment:
  VAR1: word1 word2
  VAR2: word3
  VAR3: $word 5 6
ExecStart=/usr/bin/foo-daemon
Wants=foo@1.service
Wants=foo@2.service
Environment="VAR1=word1 word2"
Environment="VAR2=word3"
Environment="VAR3=$word 5 6"

Wandle snake_case-Schlüssel in PascalCase um

systemd_convert_snake_case_keys: ja

Diese Variable ermöglicht es Ihnen, alle Direktiven in snake_case zu schreiben. Wenn aktiviert, wird diese Rolle alle snake_case-Direktiven in PascalCase umwandeln, z.B. wird exec_start: "/usr/bin/foo-daemon" in ExecStart=/usr/bin/foo-daemon umgewandelt. Wenn Ihnen diese Funktion nicht gefällt, können Sie sie deaktivieren.

systemd_readable_snake_case_keys: # siehe defaults/main.yml

Diese Rolle verwaltet ein Dictionary von lesbaren snake_case-Direktiven. Tatsächlich sind einige Direktiven abgekürzt, um CPUShares im snake case zu schreiben, müssen Sie c_p_u_shares schreiben. Dank dieser Variable können Sie cpu_shares schreiben.

Abhängigkeiten

Keine.

Beispiel Playbook

Dies ist eine Beispiel-Playbook-Datei zum Erstellen und Starten einer Diensteinheit sleep.service.

- hosts: all
  become: true
  vars:
    systemd_units:
      - name: sleep.service
        Service_section:
          ExecStart: /bin/sleep 300
        Install_section:
          WantedBy: multi-user.target
  roles:
    - { role: anasbouzid.systemd, tags: [systemd] }

Dies ist eine Beispiel-Variable systemd_units zum Erstellen und Starten einer Zieleinheit sleep.target, die 3 Dienstvorlagen instanziiert.

systemd_units:
  - name: [email protected]
    Unit_section:
      Description: Sleep for %i seconds
      PartOf: sleep.target
    Service_section:
      Restart: always
      ExecStart: /bin/sleep %i
    Install_section:
      WantedBy: multi-user.target
  - name: sleep.target
    Unit_section:
      Wants:
        - [email protected]
        - [email protected]
        - [email protected]
    Install_section:
      WantedBy: multi-user.target

Die gleiche Variable kann in snake_case geschrieben werden.

systemd_units:
  - name: [email protected]
    unit_section:
      description: Sleep for %i seconds
      part_of: sleep.target
    service_section:
      restart: always
      exec_start: /bin/sleep %i
    install_section:
      wanted_by: multi-user.target
  - name: sleep.target
    unit_section:
      wants:
        - [email protected]
        - [email protected]
        - [email protected]
    install_section:
      wanted_by: multi-user.target

Um Ihren Code zu organisieren, können Sie Einheiten in Kategorien aufteilen.

systemd_services: []
systemd_targets: []
systemd_sockets: []
systemd_units: "{{ systemd_services + systemd_targets + systemd_sockets }}"

Oder Sie können sie nach Funktionalität gruppieren.

systemd_nginx_units: []
systemd_queue_units: []
systemd_php_units: []
systemd_units: "{{ systemd_nginx_units + systemd_queue_units + systemd_php_units }}"

Lizenz

MIT

Über das Projekt

Ansible role to manage systemd units

Installieren
ansible-galaxy install anasbouzid.systemd
GitHub Repository
Lizenz
mit
Downloads
2.6k
Besitzer