robertdebock.service

Ansible-Rolle Dienst

Fügen Sie benutzerdefinierte Dienste zu Ihrem Linux-System hinzu.

GitHub GitLab Downloads Version
github gitlab downloads Version

Beispiel-Playbook

Dieses Beispiel stammt aus molecule/default/converge.yml und wird bei jedem Push, Pull-Request und Release getestet.

---
- name: Konvergieren
  hosts: alle
  become: true
  gather_facts: true

  vars:
    _service_test_command:
      default: /usr/bin/sleep
      Alpine: /bin/sleep
      Debian: /bin/sleep
      Ubuntu-16: /bin/sleep
      Ubuntu-18: /bin/sleep
    service_test_command: "{{ _service_test_command[ansible_distribution ~ '-' ~ ansible_distribution_major_version] | default(_service_test_command[ansible_os_family] | default(_service_test_command['default'])) }}"  # noqa 204 einfach lang.

  roles:
    - role: robertdebock.service
      service_list:
        - name: einfacher-dienst
          description: Einfacher Dienst
          start_command: "{{ service_test_command }} 3600"
          state: gestartet
          enabled: true
        - name: gestoppter-dienst
          description: Einfacher Dienst
          start_command: "{{ service_test_command }} 3601"
          state: gestoppt
          enabled: false
        - name: spezifischer-stop-dienst
          description: Spezifischer Stop-Dienst
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - name: spezifischer-benutzer-gruppen-dienst
          description: Dienst für bestimmte Benutzergruppe
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - name: spezifischer-arbeitsverzeichnis-dienst
          description: Dienst mit spezifischem Arbeitsverzeichnis
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - name: spezifischer-muster-dienst
          description: Dienst mit spezifischem Statusmuster
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - name: variable-dienst
          description: Dienst mit Umgebungsvariablen
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - name: pidfile-dienst
          description: Dienst mit PID-Datei
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - name: umgebungsdatei-dienst
          description: Dienst mit Umgebungsdatei
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

Die Maschine muss vorbereitet werden. In CI erfolgt dies mit molecule/default/prepare.yml:

---
- name: Vorbereiten
  hosts: alle
  become: true
  gather_facts: false
  serial: 30%

  roles:
    - role: robertdebock.bootstrap

  post_tasks:
    - name: Datei /environmentfile.txt platzieren
      ansible.builtin.copy:
        content: "value=variable"
        dest: /environmentfile.txt
        mode: "0644"

Siehe auch eine vollständige Erklärung und Beispiel zur Nutzung dieser Rollen.

Rollenvariablen

Die Standardwerte für die Variablen sind in defaults/main.yml festgelegt:

---
# Standarddatei für Dienst

# service_list kann eine Liste von Diensten enthalten, die zum System hinzugefügt werden.
# Die erforderlichen Elemente für jeden Dienst sind:
# - name: Der (kurze) Name des Dienstes, z.B. "tomcat".
# - description: Ein längerer Name, z.B. "Tomcat-Anwendungsserver".
# - start_command: Der Befehl, um den Daemon zu starten,
#   z.B. "/usr/local/bin/java -jar some.jar"
# Die optionalen Elemente sind:
# - stop_command: Standardmäßig wird das gestartete Programm gesucht und gestoppt.
#   Falls ein laufendes Programm während des Starts umbenannt oder erweitert wird (einschließlich eines Pfads),
#   können Sie hier einen benutzerdefinierten Stop-Befehl angeben, z.B. "pkill foo"
# - status_pattern: Nach welchem Programm (oder Muster) gesucht werden soll, um den
#   Status eines Programms zu ermitteln, z.B. "artifactory".
# - type: Wie das Programm startet; "simple" oder "forking". Simple bedeutet,
#   dass das Programm im Vordergrund läuft, z.B. "nc -l 1234". Forking bedeutet, dass sich das
#   Programm selbst forked, z.B. "nc -l 12345 &"
# - working_directory: Das Verzeichnis, in das gewechselt wird, bevor der Dienst gestartet wird.
# - environment_variables: Eine Liste von Variablen, die gesetzt werden sollen. Zum Beispiel:
#   environment_variables:
#     variable1: value1
#     variable2: value2
# - after: Starten nach dem genannten Dienst.
# - restart_mode: Der Modus, der verwendet werden soll, z.B. "always".
# - restart_seconds: Die Zeit, die für den Abschluss eines Neustarts erlaubt ist.
service_list: []

Anforderungen

Status der verwendeten Rollen

Die folgenden Rollen werden verwendet, um ein System vorzubereiten. Sie können Ihr System auch auf andere Weise vorbereiten.

Anforderung GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab

Kontext

Diese Rolle ist Teil von vielen kompatiblen Rollen. Schauen Sie sich die Dokumentation dieser Rollen für weitere Informationen an.

Hier ist eine Übersicht der verwandten Rollen: dependencies

Kompatibilität

Diese Rolle wurde auf diesen Container-Images getestet:

Container Tags
EL 9
Debian alle
Fedora alle
Ubuntu alle

Die Mindestversion von Ansible, die erforderlich ist, beträgt 2.12; Tests wurden durchgeführt für:

  • Die vorherige Version.
  • Die aktuelle Version.
  • Die Entwicklungsversion.

Wenn Sie Probleme finden, melden Sie diese bitte in GitHub.

Lizenz

Apache-2.0.

Autoreninfo

robertdebock

Bitte überlegen Sie, mich zu unterstützen.

Über das Projekt

Add custom services to your Linux system.

Installieren
ansible-galaxy install robertdebock.service
Lizenz
apache-2.0
Downloads
351.7k
Besitzer
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.