initial commit of role
This commit is contained in:
68
tasks/main.yml
Normal file
68
tasks/main.yml
Normal file
@@ -0,0 +1,68 @@
|
||||
# SPDX-FileCopyrightText: 2025 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
---
|
||||
- name: Set template file name
|
||||
ansible.builtin.set_fact:
|
||||
template: "{{ service }}.service.j2"
|
||||
when: template is not defined
|
||||
|
||||
- name: Install required dependencies
|
||||
ansible.builtin.apt:
|
||||
pkg:
|
||||
- systemd-container # necessary to use machinectl become_method
|
||||
install_recommends: false
|
||||
|
||||
- name: Register user info of {{ user }}
|
||||
ansible.builtin.user:
|
||||
name: "{{ user }}"
|
||||
check_mode: true
|
||||
register: user_info
|
||||
|
||||
- name: Ensure user systemd directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_info.home }}/.config/systemd/user/"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ user }}"
|
||||
|
||||
- name: Ensure systemd service file is present (template)
|
||||
ansible.builtin.template:
|
||||
src: "{{ template }}"
|
||||
dest: "{{ user_info.home }}/.config/systemd/user/{{ service }}.service"
|
||||
mode: "0644"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ user }}"
|
||||
when: copy_file is not defined
|
||||
|
||||
- name: Ensure systemd service file is present (copy)
|
||||
ansible.builtin.copy:
|
||||
src: "{{ copy_file }}"
|
||||
dest: "{{ user_info.home }}/.config/systemd/user/{{ service }}.service"
|
||||
mode: "0644"
|
||||
owner: "{{ user }}"
|
||||
group: "{{ user }}"
|
||||
when: copy_file is defined
|
||||
|
||||
- name: "Check whether user is lingering: {{ user }}"
|
||||
ansible.builtin.stat:
|
||||
path: "/var/lib/systemd/linger/{{ user }}"
|
||||
register: user_lingering
|
||||
|
||||
- name: Ensure systemd lingering is enabled for user {{ user }}
|
||||
ansible.builtin.command: loginctl enable-linger {{ user }}
|
||||
changed_when: false
|
||||
when: not user_lingering.stat.exists
|
||||
|
||||
- name: Ensure systemd service is running and enabled
|
||||
ansible.builtin.systemd_service:
|
||||
name: "{{ service }}"
|
||||
state: "{{ systemd_state }}"
|
||||
enabled: "{{ systemd_enabled }}"
|
||||
daemon_reload: "{{ systemd_daemon_reload }}"
|
||||
scope: user
|
||||
become: true
|
||||
become_user: "{{ user }}"
|
||||
become_method: community.general.machinectl # in order to get XDG_RUNTIME_DIR and user's DBUS session
|
||||
Reference in New Issue
Block a user