--- - name: Deploy Jellyfin hosts: ubuntu become: true vars: ansible_python_interpreter: /usr/bin/python3 tasks: - name: Check if host has jellyfin service ansible.builtin.set_fact: has_jellyfin: "{{ 'jellyfin' in services | default([]) }}" - name: Skip hosts without jellyfin service ansible.builtin.meta: end_host when: not has_jellyfin - name: Create jellyfin group ansible.builtin.group: name: "{{ jellyfin_group }}" gid: "{{ jellyfin_gid }}" - name: Create jellyfin user ansible.builtin.user: name: "{{ jellyfin_user }}" comment: "Jellyfin service account" group: "{{ jellyfin_group }}" uid: "{{ jellyfin_uid }}" home: "{{ jellyfin_directory }}" system: true shell: /bin/bash - name: Add keeper_user to jellyfin group ansible.builtin.user: name: "{{ keeper_user }}" groups: "{{ jellyfin_group }}" append: true - name: Create Jellyfin directories ansible.builtin.file: path: "{{ item }}" owner: "{{ jellyfin_user }}" group: "{{ jellyfin_group }}" state: directory mode: '0750' loop: - "{{ jellyfin_directory }}" - "{{ jellyfin_config_dir }}" - "{{ jellyfin_cache_dir }}" - name: Deploy Docker Compose configuration ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{ jellyfin_directory }}/docker-compose.yml" owner: "{{ jellyfin_user }}" group: "{{ jellyfin_group }}" mode: '0644' notify: - Restart Jellyfin - name: Create systemd service for Docker Compose ansible.builtin.template: src: jellyfin.service.j2 dest: /etc/systemd/system/jellyfin.service mode: '0644' notify: - Reload systemd - Enable Jellyfin handlers: - name: Reload systemd ansible.builtin.systemd: daemon_reload: true - name: Restart Jellyfin community.docker.docker_compose_v2: project_src: "{{ jellyfin_directory }}" pull: always state: present become: true become_user: "{{ jellyfin_user }}" - name: Enable Jellyfin ansible.builtin.systemd: name: jellyfin enabled: true state: started daemon_reload: true