From 6fa82b35ed292e719ff3aa8e805214642a345186 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 17 Oct 2025 11:52:02 +0000 Subject: [PATCH] Update 3 files - /group_vars/all.yml - /roles/jellyfin/tasks/main.yml - /roles/jellyfin/templates/docker-compose.yml.j2 --- group_vars/all.yml | 3 ++ roles/jellyfin/tasks/main.yml | 53 +++++++++++++++++++ .../jellyfin/templates/docker-compose.yml.j2 | 35 ++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 roles/jellyfin/tasks/main.yml create mode 100644 roles/jellyfin/templates/docker-compose.yml.j2 diff --git a/group_vars/all.yml b/group_vars/all.yml index 13e16a7..9790d4a 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -83,7 +83,10 @@ service_config_base: "/mnt/service" jellyfin_base_dir: "{{ service_config_base }}/jellyfin" jellyfin_config_dir: "{{ jellyfin_base_dir }}/config" jellyfin_cache_dir: "{{ jellyfin_base_dir }}/cache" +jellyfin_logs_dir: "{{ jellyfin_base_dir }}/logs" +jellyfin_media_path: "/mnt/video" jellyfin_port: "45131" +jellyfin_hw_acceleration: true # Audiobookshelf audiobookshelf_base_dir: "{{ service_config_base }}/audiobookshelf" diff --git a/roles/jellyfin/tasks/main.yml b/roles/jellyfin/tasks/main.yml new file mode 100644 index 0000000..bc4207d --- /dev/null +++ b/roles/jellyfin/tasks/main.yml @@ -0,0 +1,53 @@ +--- +- name: Create Jellyfin directories + file: + path: "{{ item }}" + state: directory + mode: 0755 + loop: + - "{{ jellyfin_base_dir }}" + - "{{ jellyfin_config_dir }}" + - "{{ jellyfin_cache_dir }}" + - "{{ jellyfin_logs_dir }}" + +- name: Ensure media directory exists + file: + path: "{{ jellyfin_media_path }}" + state: directory + mode: 0755 + +- name: Deploy Jellyfin docker-compose.yml + template: + src: docker-compose.yml.j2 + dest: "{{ jellyfin_base_dir }}/docker-compose.yml" + mode: 0644 + +- name: Start Jellyfin services + shell: | + cd {{ jellyfin_base_dir }} + docker compose up -d + args: + executable: /bin/bash + +- name: Wait for Jellyfin to start + pause: + seconds: 30 + +- name: Check Jellyfin container status + shell: docker ps --filter name=jellyfin + register: jellyfin_status + changed_when: false + +- name: Show Jellyfin status + debug: + var: jellyfin_status.stdout + +- name: Verify Jellyfin is accessible + uri: + url: "http://{{ ansible_host }}:{{ jellyfin_port }}" + status_code: 200 + timeout: 60 + register: jellyfin_accessible + until: jellyfin_accessible.status == 200 + retries: 10 + delay: 10 \ No newline at end of file diff --git a/roles/jellyfin/templates/docker-compose.yml.j2 b/roles/jellyfin/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..1c0e49d --- /dev/null +++ b/roles/jellyfin/templates/docker-compose.yml.j2 @@ -0,0 +1,35 @@ +version: '3.8' + +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + network_mode: "host" + environment: + - TZ={{ timezone }} + - JELLYFIN_PublishedServerUrl=http://{{ ansible_host }}:{{ jellyfin_port }} + volumes: + - {{ jellyfin_config_dir }}:/config + - {{ jellyfin_cache_dir }}:/cache + - {{ jellyfin_logs_dir }}:/log + - {{ jellyfin_media_path }}:/media:ro + {% if jellyfin_hw_acceleration %} + # Для аппаратного ускорения + - /dev/dri:/dev/dri + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + - /dev/dri/card0:/dev/dri/card0 + {% endif %} + ports: + - "{{ jellyfin_port }}:8096" + privileged: false + read_only: false + # Оптимизация для больших библиотек + tmpfs: + - /tmp + ulimits: + nproc: 65535 + nofile: + soft: 65535 + hard: 65535 \ No newline at end of file