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 プレイブックは、ユーザーレベルの Podman ソケットを有効にして起動するために、ユーザー (root ではない) として実行されます。

しかし、プレイブックを実行すると次のエラーが発生しました:

fatal: [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

同様の問題に遭遇しました。非 root ユーザーに対して ansible モジュールを有効にして podman.socket を起動することはできませんでしたが、systemctl --user enable podman.socketssh を使用してユーザーとしてログインするとコマンド ( ) を実行できました。

表示されたエラーメッセージは次のとおりです:

致命的: [x]: 失敗しました! => {"changed": false、"cmd": "/usr/bin/systemctl --user", "msg": "バスへの接続に失敗しました: 操作は許可されていません", "rc": 1、"stderr": "バスへの接続に失敗しました: 操作は許可されていません\n", "stderr_lines": ["バスへの接続に失敗しました: 操作は許可されていません"]、"stdout": "", "stdout_lines": []}

remote_user私の解決策は、の代わりにを使用することですbecome。また、 をDOCKER_HOSTユーザーの bashrc に追加しました。

次の 2 つのタスクで、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 で動作させるために役立ちました。

関連情報