diff options
Diffstat (limited to 'roles/jellyfin')
-rw-r--r-- | roles/jellyfin/defaults/main.yaml | 5 | ||||
-rw-r--r-- | roles/jellyfin/files/jellyfin/ingress.yaml | 33 | ||||
-rw-r--r-- | roles/jellyfin/files/jellyfin/pv.yaml | 34 | ||||
-rw-r--r-- | roles/jellyfin/files/jellyfin/pvc.yaml | 30 | ||||
-rw-r--r-- | roles/jellyfin/tasks/main.yaml | 68 |
5 files changed, 170 insertions, 0 deletions
diff --git a/roles/jellyfin/defaults/main.yaml b/roles/jellyfin/defaults/main.yaml new file mode 100644 index 0000000..47cfbc7 --- /dev/null +++ b/roles/jellyfin/defaults/main.yaml @@ -0,0 +1,5 @@ +jellyfin: + enabled: false + port: 8096 + version: 10.10.0 + replicas: 1 diff --git a/roles/jellyfin/files/jellyfin/ingress.yaml b/roles/jellyfin/files/jellyfin/ingress.yaml new file mode 100644 index 0000000..ab148ba --- /dev/null +++ b/roles/jellyfin/files/jellyfin/ingress.yaml @@ -0,0 +1,33 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jellyfin + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" +spec: + ingressClassName: traefik + tls: + - hosts: + - media.aadityadhruv.com + secretName: jellyfin-tls + rules: + - host: media.home + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jellyfin + port: + number: 8096 + - host: media.aadityadhruv.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jellyfin + port: + number: 8096 diff --git a/roles/jellyfin/files/jellyfin/pv.yaml b/roles/jellyfin/files/jellyfin/pv.yaml new file mode 100644 index 0000000..6c7fcb9 --- /dev/null +++ b/roles/jellyfin/files/jellyfin/pv.yaml @@ -0,0 +1,34 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: jellyfin-config + labels: + app: jellyfin-config +spec: + storageClassName: nfs + capacity: + storage: 2Gi + accessModes: + - ReadWriteMany + nfs: + server: 192.168.20.5 + path: /mnt/nfs/k3s/jellyfin/config + readOnly: false +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: jellyfin-data + labels: + app: jellyfin-data +spec: + storageClassName: nfs + capacity: + storage: 100Gi + accessModes: + - ReadWriteMany + nfs: + server: 192.168.20.5 + path: /mnt/nfs/k3s/jellyfin/data + readOnly: false diff --git a/roles/jellyfin/files/jellyfin/pvc.yaml b/roles/jellyfin/files/jellyfin/pvc.yaml new file mode 100644 index 0000000..47360a9 --- /dev/null +++ b/roles/jellyfin/files/jellyfin/pvc.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-config-pvc +spec: + storageClassName: nfs + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi + selector: + matchLabels: + app: jellyfin-config +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-data-pvc +spec: + storageClassName: nfs + accessModes: + - ReadWriteMany + resources: + requests: + storage: 100Gi + selector: + matchLabels: + app: jellyfin-data diff --git a/roles/jellyfin/tasks/main.yaml b/roles/jellyfin/tasks/main.yaml new file mode 100644 index 0000000..c5f471f --- /dev/null +++ b/roles/jellyfin/tasks/main.yaml @@ -0,0 +1,68 @@ +- name: Add Jellyfin remote chart + kubernetes.core.helm_repository: + name: jellyfin + repo_url: https://utkuozdemir.org/helm-charts + delegate_to: localhost + run_once: true + +- name: Create Jellyfin PVs + kubernetes.core.k8s: + state: "{%- if jellyfin.enabled -%} present {%- else -%} absent {%- endif -%}" + src: "{{ lookup('env', 'PWD') }}/roles/jellyfin/files/jellyfin/pv.yaml" + namespace: default + delegate_to: localhost + run_once: true +- name: Create Jellyfin PVCs + kubernetes.core.k8s: + state: "{%- if jellyfin.enabled -%} present {%- else -%} absent {%- endif -%}" + src: "{{ lookup('env', 'PWD') }}/roles/jellyfin/files/jellyfin/pvc.yaml" + namespace: default + delegate_to: localhost + run_once: true +- name: Create Jellyfin Ingress + kubernetes.core.k8s: + state: "{%- if jellyfin.enabled -%} present {%- else -%} absent {%- endif -%}" + src: "{{ lookup('env', 'PWD') }}/roles/jellyfin/files/jellyfin/ingress.yaml" + namespace: default + delegate_to: localhost + run_once: true + +- name: Get Values Path + set_fact: + jellyfin_values_path: "{{ lookup('env', 'PWD') }}/roles/jellyfin/files/jellyfin/values.yaml" + delegate_to: localhost + run_once: true + +- name: Get Values + set_fact: + jellyfin_defaults: "{{ lookup('file', jellyfin_values_path) | from_yaml }}" + delegate_to: localhost + run_once: true + + +- name: Set User overrides fact + set_fact: + overrides: + port: "{{ jellyfin.port }}" + replicaCount: "{{ jellyfin.replicas }}" + image: + tag: "{{ jellyfin.version }}" + +- name: Merge Values with overrides + set_fact: + jellyfin_values: "{{ jellyfin_defaults | combine(overrides, recursive=True) }}" + delegate_to: localhost + run_once: true + +- debug: + var: jellyfin_values + +- name: Deploy Jellyfin + kubernetes.core.helm: + name: jellyfin + chart_ref: jellyfin/jellyfin + values: "{{ jellyfin_values }}" + namespace: default + state: "{%- if jellyfin.enabled -%} present {%- else -%} absent {%- endif -%}" + delegate_to: localhost + run_once: true |