Ansible - 啟動 systemctl Podman 使用者套接字時沒有此類檔案錯誤

Ansible - 啟動 systemctl Podman 使用者套接字時沒有此類檔案錯誤

我正在新的 Oracle Linux 8 系統上執行 Ansible playbook。它包括一個要求 systemctl 啟動用戶 Podman 套接字的步驟,如下所示:

- 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 }}"

此 Ansible playbook 以使用者(而非 root)身分執行,以啟用和啟動使用者等級 Podman 套接字。

但是,運行劇本給了我這個錯誤:

致命:[127.0.0.1]:失敗! => {“changed”:false,“cmd”:“/bin/systemctl --user”,“msg”:“無法連接到總線:沒有這樣的檔案或目錄”,“rc”:1,“stderr” : "無法連線到匯流排:沒有這樣的檔案或目錄\n", "stderr_lines": ["無法連線到匯流排:沒有這樣的檔案或目錄"], "stdout": "", "stdout_lines": [] }

如果我不使用 Ansible,而是手動執行以下 systemctl 命令,則使用者 Podman 套接字將成功啟動:

systemctl --user enable podman.socket

我的劇本中缺少什麼以及如何解決?謝謝!

答案1

我遇到了類似的問題,我無法讓 ansible 模組為非 root 使用者啟用和啟動 podman.socket,但systemctl --user enable podman.socket在使用 ssh 以使用者身分登入時可以執行命令 ( )。

我收到的錯誤訊息是:

致命:[x]:失敗! => {“changed”:false,“cmd”:“/usr/bin/systemctl --user”,“msg”:“無法連接到總線:不允許操作”,“rc”:1,“stderr” : "無法連接到匯流排:不允許操作\n", "stderr_lines": ["無法連接到匯流排:不允許操作"], "stdout": "", "stdout_lines": []}

我的解決方案是使用remote_user而不是become.我還將其添加DOCKER_HOST到用戶的 bashrc 中。

透過以下兩個任務,我可以無根啟用並啟動 podman.socket。

- 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

這對於讓 docker-compose 與 podman 和 ansible 一起工作很有幫助。

相關內容