Ansible managed systemd user units
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