Ansible - 激活 systemctl Podman 用户套接字时没有出现此文件错误

Ansible - 激活 systemctl Podman 用户套接字时没有出现此文件错误

我正在全新的 Oracle Linux 8 系统上运行 Ansible 剧本。它包括一个步骤,要求 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 剧本以用户(非 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 rootless。

- 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 协同工作很有帮助。

相关内容