diff --git a/roles/jellyfin/defaults/main.yml b/roles/jellyfin/defaults/main.yml new file mode 100644 index 0000000..54eaff8 --- /dev/null +++ b/roles/jellyfin/defaults/main.yml @@ -0,0 +1,29 @@ +--- + +jellyfin_user: jellyfin + +jellyfin_base_path: /opt/jellyfin +jellyfin_config_path: "{{ jellyfin_base_path }}/config" +jellyfin_cache_path: "{{ jellyfin_base_path }}/cache" + +jellyfin_media_volumes: [] + +jellyfin_container_name: jellyfin +jellyfin_container_image_name: "docker.io/jellyfin/jellyfin" +jellyfin_container_image_tag: "stable" +jellyfin_container_image_ref: "{{ jellyfin_container_image_name }}:{{ jellyfin_container_image_tag }}" +jellyfin_container_network_mode: host +jellyfin_container_networks: ~ +jellyfin_container_volumes: "{{ jellyfin_container_base_volumes + jellyfin_media_volumes }}" +jellyfin_container_restart_policy: "unless-stopped" + +jellyfin_host_directories: + - path: "{{ jellyfin_base_path }}" + mode: "0750" + - path: "{{ jellyfin_config_path }}" + mode: "0750" + - path: "{{ jellyfin_cache_path }}" + mode: "0750" + +jellyfin_uid: "{{ jellyfin_user_info.uid | default(jellyfin_user) }}" +jellyfin_gid: "{{ jellyfin_user_info.group | default(jellyfin_user) }}" diff --git a/roles/jellyfin/tasks/main.yml b/roles/jellyfin/tasks/main.yml new file mode 100644 index 0000000..14a8256 --- /dev/null +++ b/roles/jellyfin/tasks/main.yml @@ -0,0 +1,35 @@ +--- + +- name: Ensure user '{{ jellyfin_user }}' for jellyfin is created + user: + name: "{{ jellyfin_user }}" + state: present + system: yes + register: jellyfin_user_info + +- name: Ensure host directories for jellyfin exist + file: + path: "{{ item.path }}" + state: directory + owner: "{{ item.owner | default(jellyfin_uid) }}" + group: "{{ item.group | default(jellyfin_gid) }}" + mode: "{{ item.mode }}" + loop: "{{ jellyfin_host_directories }}" + +- name: Ensure container image for jellyfin is available + docker_image: + name: "{{ jellyfin_container_image_ref }}" + state: present + source: pull + force_source: "{{ jellyfin_container_image_tag in ['stable', 'unstable'] }}" + +- name: Ensure container '{{ jellyfin_container_name }}' is running + docker_container: + name: "{{ jellyfin_container_name }}" + image: "{{ jellyfin_container_image_ref }}" + user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}" + volumes: "{{ jellyfin_container_volumes }}" + networks: "{{ jellyfin_container_networks | default(omit, True) }}" + network_mode: "{{ jellyfin_container_network_mode }}" + restart_policy: "{{ jellyfin_container_restart_policy }}" + state: started diff --git a/roles/jellyfin/vars/main.yml b/roles/jellyfin/vars/main.yml new file mode 100644 index 0000000..d5e587b --- /dev/null +++ b/roles/jellyfin/vars/main.yml @@ -0,0 +1,5 @@ +--- + +jellyfin_container_base_volumes: + - "{{ jellyfin_config_path }}:/config:z" + - "{{ jellyfin_cache_path }}:/cache:z"