diff --git a/docker-compose/docker-compose-jellyfin.yml b/docker-compose/docker-compose-jellyfin.yml new file mode 100644 index 0000000..53c3edb --- /dev/null +++ b/docker-compose/docker-compose-jellyfin.yml @@ -0,0 +1,33 @@ + +services: + jellyfin: + image: lscr.io/linuxserver/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + + ports: + - "8096:8096" + - "7359:7359/udp" + - "1900:1900/udp" + + environment: + - TZ=Europe/Prague + - PUID=0 + - PGID=0 + + volumes: + - /opt/jellyfin/config:/config + - /opt/jellyfin/cache:/cache + - /mnt/films:/media/films:ro + - /mnt/books:/media/books:ro + - /mnt/ondrulin:/media/ondrulin:ro + + devices: + - /dev/dri:/dev/dri + + group_add: + - "104" + - "44" + + tmpfs: + - /transcode:rw,size=8g,mode=1777 diff --git a/inv_vm b/inv_vm index c2f8460..fd03e0e 100644 --- a/inv_vm +++ b/inv_vm @@ -1,3 +1,5 @@ [vm] pve1_vm ansible_host=192.168.69.253 -pve2_vm ansible_host=192.168.69.254 \ No newline at end of file +pve2_vm ansible_host=192.168.69.254 +[lxc] +pve2_lxc_jellyfin ansible_host=192.168.69.252 diff --git a/update_broker_kafka-ui.yml b/old/update_broker_kafka-ui.yml similarity index 100% rename from update_broker_kafka-ui.yml rename to old/update_broker_kafka-ui.yml diff --git a/update_jellyfin.yml b/update_jellyfin.yml new file mode 100644 index 0000000..30b8a9c --- /dev/null +++ b/update_jellyfin.yml @@ -0,0 +1,95 @@ +# update_jellyfin.yml + +- name: Update Jellyfin + hosts: pve2_lxc_jellyfin + gather_facts: false + + vars: + # Compose sync (controller -> target) + compose_local_dir: "{{ playbook_dir }}/docker-compose" + compose_remote_base: "/home/{{ ansible_user }}/.ansible-compose" + compose_remote_dir: "{{ compose_remote_base }}/docker-compose" + compose_remote_archive: "{{ compose_remote_base }}/docker-compose.tar.gz" + + # Jellyfin settings + jellyfin_project: jellyfin + jellyfin_compose_filename: "docker-compose-jellyfin.yml" + jellyfin_service: jellyfin + jellyfin_port: 8096 + + tasks: + - name: Ensure remote base directory exists + ansible.builtin.file: + path: "{{ compose_remote_base }}" + state: directory + mode: "0755" + + - name: Create local archive of docker-compose directory (controller) + ansible.builtin.archive: + path: "{{ compose_local_dir }}/" + dest: "/tmp/docker-compose.tar.gz" + format: gz + delegate_to: localhost + run_once: true + + - name: Upload archive to remote host + ansible.builtin.copy: + src: "/tmp/docker-compose.tar.gz" + dest: "{{ compose_remote_archive }}" + mode: "0644" + + - name: Recreate remote compose directory + ansible.builtin.file: + path: "{{ compose_remote_dir }}" + state: absent + + - name: Ensure remote compose directory exists + ansible.builtin.file: + path: "{{ compose_remote_dir }}" + state: directory + mode: "0755" + + - name: Extract archive on remote host + ansible.builtin.unarchive: + src: "{{ compose_remote_archive }}" + dest: "{{ compose_remote_dir }}" + remote_src: true + + - name: Pull latest Jellyfin image + community.docker.docker_compose_v2: + project_name: "{{ jellyfin_project }}" + project_src: "{{ compose_remote_dir }}" + files: + - "{{ jellyfin_compose_filename }}" + pull: always + # become: true # uncomment if your ansible user cannot access Docker + + - name: Recreate Jellyfin service + community.docker.docker_compose_v2: + project_name: "{{ jellyfin_project }}" + project_src: "{{ compose_remote_dir }}" + files: + - "{{ jellyfin_compose_filename }}" + services: + - "{{ jellyfin_service }}" + state: present + recreate: always + # become: true # uncomment if needed + + - name: Wait for Jellyfin port + ansible.builtin.wait_for: + host: 127.0.0.1 + port: "{{ jellyfin_port }}" + timeout: 120 + + - name: Check Jellyfin HTTP endpoint (retry until ready) + ansible.builtin.uri: + url: "http://127.0.0.1:{{ jellyfin_port }}/" + status_code: + - 200 + - 302 + register: jellyfin_http + retries: 40 + delay: 3 + until: jellyfin_http.status in [200, 302] + changed_when: false