--- - name: Create per-runner system user ansible.builtin.user: name: "{{ gitea_runner_service_user }}" home: "{{ gitea_runner_home }}" shell: /bin/bash system: true create_home: true register: gitea_runner_user - name: Set runner UID fact ansible.builtin.set_fact: gitea_runner_uid: "{{ gitea_runner_user.uid }}" - name: Check if lingering is already enabled ansible.builtin.stat: path: "/var/lib/systemd/linger/{{ gitea_runner_service_user }}" register: gitea_runner_linger_stat - name: Enable lingering for runner user ansible.builtin.command: loginctl enable-linger {{ gitea_runner_service_user }} changed_when: not gitea_runner_linger_stat.stat.exists when: gitea_runner_systemd_available.stat.exists - name: Ensure subuid entry for runner user ansible.builtin.lineinfile: path: /etc/subuid regexp: "^{{ gitea_runner_service_user }}:" line: "{{ gitea_runner_service_user }}:100000:65536" create: true mode: "0644" - name: Ensure subgid entry for runner user ansible.builtin.lineinfile: path: /etc/subgid regexp: "^{{ gitea_runner_service_user }}:" line: "{{ gitea_runner_service_user }}:100000:65536" create: true mode: "0644" - name: Ensure XDG_RUNTIME_DIR exists ansible.builtin.file: path: "/run/user/{{ gitea_runner_uid }}" state: directory owner: "{{ gitea_runner_service_user }}" group: "{{ gitea_runner_service_user }}" mode: "0700" - name: Ensure runner data directory exists ansible.builtin.file: path: "{{ gitea_runner_data_dir }}" state: directory owner: "{{ gitea_runner_service_user }}" group: "{{ gitea_runner_service_user }}" mode: "0755" - name: Ensure runner config directory exists ansible.builtin.file: path: "{{ gitea_runner_config_dir }}" state: directory owner: "{{ gitea_runner_service_user }}" group: "{{ gitea_runner_service_user }}" mode: "0755" - name: Ensure systemd user directory exists ansible.builtin.file: path: "{{ gitea_runner_home }}/.config/systemd/user" state: directory owner: "{{ gitea_runner_service_user }}" group: "{{ gitea_runner_service_user }}" mode: "0755"