This commit is contained in:
parent
cfec82e91e
commit
25342b10eb
@ -14,3 +14,18 @@ jellyfin_dependencies:
|
|||||||
- krb5-libs
|
- krb5-libs
|
||||||
- libicu
|
- libicu
|
||||||
- zlib
|
- zlib
|
||||||
|
|
||||||
|
# Create separate LVM storage for jellyfin
|
||||||
|
jellyfin_lvm_enabled: False
|
||||||
|
# This variables are only necessary if jellyfin_lvm_enabled is 'True'
|
||||||
|
# Set physical volumes to use in LVM
|
||||||
|
# jellyfin_lvm_pvs: # ['/dev/sdb', '/dev/sdc']
|
||||||
|
# jellyfin_lvm_vg: # "vg_jellyfin"
|
||||||
|
# jellyfin_lvm_lv: # "lv_jellyfin"
|
||||||
|
# jellyfin_lvm_fstype: # ext4
|
||||||
|
# jellyfin_lvm_size: # "50G"
|
||||||
|
|
||||||
|
jellyfin_base_dir: "/opt/jellyfin"
|
||||||
|
jellyfin_conf_dir: "{{ jellyfin_base_dir }}/config"
|
||||||
|
jellyfin_data_dir: "{{ jellyfin_base_dir }}/data"
|
||||||
|
jellyfin_log_dir: "{{ jellyfin_base_dir }}/log"
|
||||||
|
66
tasks/install.yml
Normal file
66
tasks/install.yml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
- name: Prepare base folders
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ jellyfin_user }}"
|
||||||
|
group: "{{ jellyfin_user }}"
|
||||||
|
mode: 0750
|
||||||
|
loop:
|
||||||
|
- "{{ jellyfin_base_dir }}"
|
||||||
|
- "{{ jellyfin_base_dir }}/{{ jellyfin_version }}"
|
||||||
|
- "{{ jellyfin_conf_dir }}"
|
||||||
|
- "{{ jellyfin_data_dir }}"
|
||||||
|
- "{{ jellyfin_log_dir }}"
|
||||||
|
become: True
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Install portable binary
|
||||||
|
unarchive:
|
||||||
|
src: https://repo.jellyfin.org/releases/server/linux/jellyfin_{{ jellyfin_version }}.portable-linux-amd64.tar.gz
|
||||||
|
dest: "{{ jellyfin_base_dir }}/{{ jellyfin_version }}"
|
||||||
|
extra_opts:
|
||||||
|
- --strip-components=1
|
||||||
|
remote_src: yes
|
||||||
|
|
||||||
|
- name: Deploy global config files
|
||||||
|
template:
|
||||||
|
src: "opt/jellyfin/config/{{ item }}.j2"
|
||||||
|
dest: "{{ jellyfin_conf_dir }}/{{ item }}"
|
||||||
|
mode: 0600
|
||||||
|
loop:
|
||||||
|
- "logging.json"
|
||||||
|
# notify: __jellyfin_restart
|
||||||
|
become: True
|
||||||
|
become_user: "{{ jellyfin_user }}"
|
||||||
|
|
||||||
|
# - block:
|
||||||
|
# - name: Copy systemd unit file
|
||||||
|
# template:
|
||||||
|
# src: "etc/systemd/system/jellyfin.service.j2"
|
||||||
|
# dest: "/etc/systemd/system/jellyfin.service"
|
||||||
|
# notify: __jellyfin_restart
|
||||||
|
|
||||||
|
# - name: Copy logrotate config
|
||||||
|
# template:
|
||||||
|
# src: "etc/logrotate.d/config.j2"
|
||||||
|
# dest: "/etc/logrotate.d/jellyfin"
|
||||||
|
# loop: "{{ jellyfin_logrotate_config }}"
|
||||||
|
# loop_control:
|
||||||
|
# label: "{{ item.log }}"
|
||||||
|
# when: jellyfin_logrotate_enabled
|
||||||
|
|
||||||
|
# - name: Open ports in iptables
|
||||||
|
# iptables_raw:
|
||||||
|
# name: "{{ item.name }}"
|
||||||
|
# rules: "{{ item.rules }}"
|
||||||
|
# state: "{{ item.state }}"
|
||||||
|
# weight: "{{ item.weight | default(omit) }}"
|
||||||
|
# table: "{{ item.table | default(omit) }}"
|
||||||
|
# loop: "{{ jellyfin_open_ports }}"
|
||||||
|
# loop_control:
|
||||||
|
# label: "{{ item.name }}"
|
||||||
|
# when: jellyfin_iptables_enabled
|
||||||
|
# become: True
|
||||||
|
# become_user: root
|
@ -1,2 +1,5 @@
|
|||||||
---
|
---
|
||||||
- include_tasks: prepare.yml
|
- include_tasks: prepare.yml
|
||||||
|
- import_tasks: storage.yml
|
||||||
|
when: jellyfin_lvm_enabled
|
||||||
|
- include_tasks: install.yml
|
||||||
|
27
tasks/storage.yml
Normal file
27
tasks/storage.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- block:
|
||||||
|
- name: Create volume group '{{ jellyfin_lvm_vg }}'
|
||||||
|
lvg:
|
||||||
|
vg: "{{ jellyfin_lvm_vg }}"
|
||||||
|
pvs: "{{ jellyfin_lvm_pvs | join(',') }}"
|
||||||
|
|
||||||
|
- name: Create logical volume '{{ jellyfin_lvm_lv }}'
|
||||||
|
lvol:
|
||||||
|
vg: "{{ jellyfin_lvm_vg }}"
|
||||||
|
lv: "{{ jellyfin_lvm_lv }}"
|
||||||
|
size: "{{ jellyfin_lvm_size }}"
|
||||||
|
|
||||||
|
- name: Create filesystem for '/dev/mapper/{{ jellyfin_lvm_vg }}-{{ jellyfin_lvm_lv }}'
|
||||||
|
filesystem:
|
||||||
|
fstype: "{{ jellyfin_lvm_fstype }}"
|
||||||
|
dev: "/dev/mapper/{{ jellyfin_lvm_vg }}-{{ jellyfin_lvm_lv }}"
|
||||||
|
resizefs: True
|
||||||
|
|
||||||
|
- name: Mount volume to '{{ jellyfin_base_dir }}'
|
||||||
|
mount:
|
||||||
|
path: "{{ jellyfin_base_dir }}"
|
||||||
|
src: "/dev/mapper/{{ jellyfin_lvm_vg }}-{{ jellyfin_lvm_lv }}"
|
||||||
|
fstype: "{{ jellyfin_lvm_fstype }}"
|
||||||
|
state: mounted
|
||||||
|
become: True
|
||||||
|
become_user: root
|
30
templates/opt/jellyfin/config/logging.json.j2
Normal file
30
templates/opt/jellyfin/config/logging.json.j2
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"Serilog": {
|
||||||
|
"MinimumLevel": "Information",
|
||||||
|
"WriteTo": [
|
||||||
|
{
|
||||||
|
"Name": "Console",
|
||||||
|
"Args": {
|
||||||
|
"outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Async",
|
||||||
|
"Args": {
|
||||||
|
"configure": [
|
||||||
|
{
|
||||||
|
"Name": "File",
|
||||||
|
"Args": {
|
||||||
|
"path": "{{ jellyfin_log_dir }}/jellyfin.log",
|
||||||
|
"fileSizeLimitBytes": 10485700,
|
||||||
|
"rollOnFileSizeLimit": true,
|
||||||
|
"retainedFileCountLimit": 10,
|
||||||
|
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user