Ansible - Kein solcher Dateifehler beim Aktivieren des systemctl Podman-Benutzersockets

Ansible - Kein solcher Dateifehler beim Aktivieren des systemctl Podman-Benutzersockets

Ich führe ein Ansible-Playbook auf einem neuen Oracle Linux 8-System aus. Es enthält einen Schritt, in dem systemctl aufgefordert wird, einen Benutzer-Podman-Socket wie folgt zu aktivieren:

- name: Enable podman socket
  vars: 
    userid: ansible_facts.getent_passwd.{{ ansible_user_id }}[1]
  ansible.builtin.systemd: 
    name: podman.socket
    enabled: yes
    state: started
    scope: user
  environment:
    XDG_RUNTIME_DIR: "/run/user/{{ userid }}"

Dieses Ansible-Playbook wird als Benutzer (nicht als Root) ausgeführt, um den Podman-Socket auf Benutzerebene zu aktivieren und zu starten.

Beim Ausführen des Playbooks trat jedoch dieser Fehler auf:

fatal: [127.0.0.1]: FEHLGESCHLAGEN! => {"changed": false, "cmd": "/bin/systemctl --user", "msg": "Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis", "rc": 1, "stderr": "Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis\n", "stderr_lines": ["Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis"], "stdout": "", "stdout_lines": []}

Wenn ich statt Ansible den folgenden systemctl-Befehl manuell ausführe, wird der Benutzer-Podman-Socket erfolgreich aktiviert:

systemctl --user enable podman.socket

Was fehlt mir in meinem Playbook und wie behebe ich das? Danke!

Antwort1

Ich bin auf ein ähnliches Problem gestoßen: Ich konnte das Ansible-Modul nicht dazu bringen, podman.socket für den Nicht-Root-Benutzer zu aktivieren und zu starten, aber ich konnte den Befehl ( systemctl --user enable podman.socket) ausführen, wenn ich mich per SSH als dieser Benutzer anmeldete.

Die Fehlermeldung, die ich bekam, war:

fatal: [x]: FEHLGESCHLAGEN! => {"changed": false, "cmd": "/usr/bin/systemctl --user", "msg": "Verbindung zum Bus fehlgeschlagen: Vorgang nicht zulässig", "rc": 1, "stderr": "Verbindung zum Bus fehlgeschlagen: Vorgang nicht zulässig\n", "stderr_lines": ["Verbindung zum Bus fehlgeschlagen: Vorgang nicht zulässig"], "stdout": "", "stdout_lines": []}

remote_userMeine Lösung bestand darin, anstelle von zu verwenden become. Außerdem habe ich DOCKER_HOSTzur bashrc des Benutzers hinzugefügt.

Mit den folgenden beiden Aufgaben konnte ich podman.socket rootless aktivieren und starten.

- name: Export podman.socket
  become: '{{ user }}'
  become: true
  lineinfile: 
    dest: "/home/{{ user }}/.bashrc"
    line: "export DOCKER_HOST=unix:$XDG_RUNTIME_DIR/podman/podman.sock"
    insertafter: "EOF"

- name: Enable podman.socket for user
  remote_user: '{{ user }}'
  systemd: 
    name: "podman.socket"
    enabled: yes
    state: started
    scope: user

Dies war hilfreich, um Docker-Compose mit Podman und Ansible zum Laufen zu bringen.

verwandte Informationen