Ansible 2.2.0 gained the ability to manage user units. It's not as straight forward as using the new user parameter though. Here is an example managing a per-user gpg-agent socket:
- name: user gpg-agent systemd: name: gpg-agent.socket state: started enabled: yes user: yes become: yes become_user: "{{ item.name }}" become_method: su environment: XDG_RUNTIME_DIR: "/run/user/{{ item.uid }}" with_items: "{{ users }}"Without the XDG_RUNTIME_DIR environment variable set correctly you'll get the following failure:
failure 1 running systemctl show for 'gpg-agent.socket': Failed to connect to bus: Permission denied.
This example expects a users variable looking like:
users: - name: foo uid: 1000 - name: bar uid: 1001