notmycloud.podman_systemd

Ansible Podman_systemd

Beschreibung

Konfigurieren Sie Podman-Systemd-Einheiten für System- und rootlose Benutzer.

Installation

Die folgenden Rollen sind ebenfalls erforderlich. Wenn ich sie als Abhängigkeit hinzufüge, werden sie ausgeführt, was fehlschlägt.

  • linuxhq.sysctl
  • notmycloud.yaml2ini
  • notmycloud.systemd_unit

WICHTIG: Erfordert die Installation des Python-Pakets toml. Installieren Sie es mit pip.

Verwendung

Geben Sie die folgenden Variablen an, damit diese Rolle korrekt funktioniert. PODMAN_SYSTEMD_INSTALL_COCKPIT installiert Cockpit mit Podman-Unterstützung. PODMAN_SYSTEMD_ALLOW_LOWEST_PORT gibt den niedrigsten Port an, den ein nicht privilegierter Benutzer binden kann. Es wird diskutiert, dass die niedrigen Ports von 1024 oder weniger "sicher" sind und auf vertrauenswürdige Benutzer beschränkt werden sollten. Wenn dies ein Multi-Tenant-Server ist, wird empfohlen, diese Variable zu überspringen. Wenn Sie jedoch diesen Server vollständig verwalten und Benutzer pro Dienst einrichten, kann Ihnen diese Option einige Kopfschmerzen ersparen. Meiner Meinung nach kann dies auf 0 für einen Server eingestellt werden, der nicht multi-tenant ist. PODMAN_SYSTEMD_ALLOW_PING erlaubt es nicht privilegierten Benutzern, Pings zu senden. PODMAN_SYSTEMD_DEPLOY enthält den Großteil der Podman-Konfiguration. Erstellen Sie einen Schlüssel für jeden Benutzer, der eine Systemd-Einheit erhalten soll.

PODMAN_SYSTEMD_DEPLOY:
  root:
    usw...
  benutzer1:
    usw...
  benutzer2:
    usw...

Benutzerkonfiguration

Root wird im Standardverzeichnis /etc/systemd/system konfiguriert, während Benutzer im Verzeichnis ~/.config/system/user konfiguriert werden. In diesem Beispiel werden wir für einen nicht privilegierten Benutzer konfigurieren.

debug_log: bool # auf true setzen, um Aufgaben- und Debug-Protokollierung zu aktivieren
PODMAN_SYSTEMD_DEPLOY:
  meinbenutzer:
    konfiguration:
      speicher:
        speicher:
          treiber: "overlay"
        # Schlüssel:Wert-Paare, die im INI-Format für storage.conf geschrieben werden. Dies wird im entsprechenden Verzeichnis für entweder einen Benutzer oder, wenn der Benutzer root ist, im /etc-Konfigurationsverzeichnis abgelegt.
        # Die Schlüssel:Wert-Paare sollten dem Format entsprechen, das durch die Rolle notmycloud.yaml2ini vorgegeben ist.
      container:
        motor:
          netzwerk_cmd_optionen:
            - "allow_host_loopback=true"
            - "enable_ipv6=true"
          umgebung: 
            - "TMPDIR=$HOME/.cache/tmp/"
        # Schlüssel:Wert-Paare, die im TOML-Format für containers.conf geschrieben werden. Dies wird im entsprechenden Verzeichnis für entweder einen Benutzer oder, wenn der Benutzer root ist, im /etc-Konfigurationsverzeichnis abgelegt.
      registrierungen:
        unqualifizierte-suchregistrierungen:
          - "docker.io"
          # - "quay.io"
          # - "registry.access.redhat.com"
        registrierung:
          # - prefix: "docker.io"
          #   standort: "127.0.0.1:5000"
          #   unsicher: true
          # Im November 2020 beschränkt Docker das Herunterladen von Bildern. Um zu vermeiden, dass diese
          # Grenzen während des Testens überschritten werden, verwenden Sie immer den Google-Spiegel für qualifizierte und
          # unqualifizierte `docker.io`-Bilder.
          # Hinweis: https://cloud.google.com/container-registry/docs/pulling-cached-images
        registrierung.spiegel:
          - standort: "https://mirror.gcr.io"
        # Schlüssel:Wert-Paare, die im TOML-Format für registries.conf geschrieben werden. Dies wird im entsprechenden Verzeichnis für entweder einen Benutzer oder, wenn der Benutzer root ist, im /etc-Konfigurationsverzeichnis abgelegt.
      einloggen: # Siehe Dokumentation für das Modul containers.podman.podman_login
        - registrierung: registry.meinedomain.com
          benutzername: registrierungsbenutzer
          passwort: super$3(r37Passwort
    systemd:
      aktiviere_socket: # Standard False, aktiviert den Podman API-Socket für den Benutzer oder, wenn unter root, systemweit.
      container:
        CONTAINERNAME: # Ersetzen Sie dies durch den Namen, den Sie für den Container wünschen. Dies wird auch für die Systemd-Einheitsdatei verwendet.
          podman_optionen:
            bild:
            netzwerk: # Netzwerkzeichenkette, standardmäßig slirp4netns:allow_host_loopback=true,enable_ipv6=true
            ersetzen: # bool
            neustarten: # "immer"|"nein"|"bei-fehler"|"es sei denn, es wurde gestoppt" standardmäßig nein
            entfernen: # Standardmäßig ja
            stop_timeout: # Standardmäßig 60 Sekunden
            protokoll_treiber: # Standardmäßig Durchleitung, damit Sie Ihre Protokolle im Journal anzeigen können
            gesundheitsprüfung:
              cmd:
              intervall:
              wiederholungen:
              verzögerung:
              zeitüberschreitung:
            umgebung: # Array von Schlüssel-Wert-Paaren
              schlüssel: "wert"
            ports: # 0.0.0.0:hostport:containerport
            volumes: 
              - host:
                container:
                optionen:
                typ: # datei/verzeichnis
            etiketten: # Array von Schlüssel-Wert-Paaren
              schlüssel: "wert"
            andere_optionen: # Zeichenfolge oder Array anderer Optionen, die an podman run übergeben werden
          dienst_optionen: # Siehe notmycloud.systemd_unit Variable, Tiefe gleich UNIT_NAME
      pods:
        PODNAME: # Ersetzen Sie dies durch den Namen, den Sie für den Pod wünschen. Dies wird auch verwendet, um die zugehörigen Container zu kennzeichnen.
          pod_dienst_optionen: # Siehe notmycloud.systemd_unit Variable, Tiefe gleich UNIT_NAME
          CONTAINERNAME:
            # Folgen Sie der obigen PODMAN_SYSTEMD_DEPLOY.BENUTZERNAME.systemd.container.CONTAINERNAME-Syntax

Weitere Hinweise

Podman Socket

Der Root-Socket wird aktiviert unter: /run/podman/podman.sock
Der rootlose Socket wird aktiviert unter: /run/user/$UID/podman/podman.sock

Container-Konfigurationsverzeichnis

Ich empfehle, %E/%N/ als Ihr Konfigurationsverzeichnis zu verwenden.
Dies wird die Konfiguration entweder in ~/.config/{service_name}/ oder /etc/{service_name}/ speichern.
Für Container, die mehrere Konfigurationsverzeichnisse benötigen, verwende ich %E/%N/config1/, %E/%N/config2/ usw.

Empfohlene andere Optionen

--init Führen Sie eine Init innerhalb des Containers aus, die Signale weiterleitet und Prozesse verwaltet. Siehe containers/podman#1670 für weitere Informationen
--cap-drop=all Entfernen Sie alle Berechtigungen. Sie müssen wahrscheinlich Berechtigungen hinzufügen, damit Ihr Container richtig funktioniert.
--security-opt=no-new-privileges Verhindern, dass Containerprozesse zusätzliche Berechtigungen erhalten. Weitere Informationen finden Sie in den Dokumentationen.
--userns=keep-id Ordnet den Containerbenutzer der Benutzer-ID des Hosts zu.

Unterstützung

Für Unterstützung bitten wir Sie, ein Problem zu melden und die folgenden Punkte bereitzustellen:

  • Beispielaufgabe/Playbook, um Ihr Problem zu reproduzieren
  • Ergebnisdatei, die erstellt wird.
Über das Projekt

Configure Podman Systemd Units for system and rootless users.

Installieren
ansible-galaxy install notmycloud.podman_systemd
GitHub Repository
Lizenz
mit
Downloads
234
Besitzer