summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2022-07-23 00:10:08 +0200
committerChristian Pointner <equinox@spreadspace.org>2022-07-23 00:10:08 +0200
commit8004e8a6eb01db695dc6c9f2d03fd4b47b6d22d4 (patch)
treea5cbffb1af312062901e6c9b3c14207f17970615 /roles
parentele-helene: prepare for handbrake docker container (diff)
add role streaming/handbrake
Diffstat (limited to 'roles')
-rw-r--r--roles/streaming/handbrake/defaults/main.yml12
-rw-r--r--roles/streaming/handbrake/tasks/main.yml25
-rw-r--r--roles/streaming/handbrake/templates/pod-spec.yml.j259
3 files changed, 96 insertions, 0 deletions
diff --git a/roles/streaming/handbrake/defaults/main.yml b/roles/streaming/handbrake/defaults/main.yml
new file mode 100644
index 00000000..8404f0d6
--- /dev/null
+++ b/roles/streaming/handbrake/defaults/main.yml
@@ -0,0 +1,12 @@
+---
+# handbrake_storage:
+# type: (lvm|zfs)
+# ...
+handbrake_base_path: /srv/handbrake
+
+# handbrake_inst_name: transcoder
+# handbrake_image_version: v1.25.1
+handbrake_enable_hardware_encoding: no
+
+handbrake_web_port: 5800
+handbrake_timezone: Europe/Vienna
diff --git a/roles/streaming/handbrake/tasks/main.yml b/roles/streaming/handbrake/tasks/main.yml
new file mode 100644
index 00000000..75579d89
--- /dev/null
+++ b/roles/streaming/handbrake/tasks/main.yml
@@ -0,0 +1,25 @@
+---
+- name: prepare handbrake storage volume
+ when: handbrake_storage is defined
+ vars:
+ storage_volume: "{{ handbrake_storage | combine({'dest': handbrake_base_path}) }}"
+ include_role:
+ name: "storage/{{ handbrake_storage.type }}/volume"
+
+- name: create handbrake instance directories
+ loop:
+ - config
+ - storage
+ - watch
+ - output
+ file:
+ path: "{{ handbrake_base_path }}/{{ handbrake_inst_name }}/{{ item }}"
+ state: directory
+
+- name: install pod manifest
+ vars:
+ kubernetes_standalone_pod:
+ name: "handbrake-{{ handbrake_inst_name }}"
+ spec: "{{ lookup('template', 'pod-spec.yml.j2') }}"
+ include_role:
+ name: kubernetes/standalone/pod
diff --git a/roles/streaming/handbrake/templates/pod-spec.yml.j2 b/roles/streaming/handbrake/templates/pod-spec.yml.j2
new file mode 100644
index 00000000..5f321864
--- /dev/null
+++ b/roles/streaming/handbrake/templates/pod-spec.yml.j2
@@ -0,0 +1,59 @@
+containers:
+- name: handbrake
+ image: jlesage/handbrake:{{ handbrake_image_version }}
+ imagePullPolicy: Always
+ terminationGracePeriodSeconds: 120
+ securityContext:
+ privileged: true
+ env:
+ - name: USER_ID
+ value: '990'
+ - name: GROUP_ID
+ value: '990'
+ - name: SUP_GROUP_IDS
+ value: '44'
+ - name: KEEP_APP_RUNNING
+ value: '1'
+ - name: TZ
+ value: '{{ handbrake_timezone }}'
+
+ volumeMounts:
+{% if handbrake_enable_hardware_encoding %}
+ - name: dri-device
+ mountPath: /dev/dri
+{% endif %}
+ - name: config
+ mountPath: /config
+ - name: storage
+ mountPath: /storage
+ readOnly: yes
+ - name: watch
+ mountPath: /watch
+ - name: output
+ mountPath: /output
+ ports:
+ - containerPort: 5800
+ hostPort: {{ handbrake_web_port }}
+
+volumes:
+{% if handbrake_enable_hardware_encoding %}
+- name: dri-device
+ hostPath:
+ path: /dev/dri
+{% endif %}
+- name: config
+ hostPath:
+ path: "{{ handbrake_base_path }}/{{ handbrake_inst_name }}/config"
+ type: Directory
+- name: storage
+ hostPath:
+ path: "{{ handbrake_base_path }}/{{ handbrake_inst_name }}/storage"
+ type: Directory
+- name: watch
+ hostPath:
+ path: "{{ handbrake_base_path }}/{{ handbrake_inst_name }}/watch"
+ type: Directory
+- name: output
+ hostPath:
+ path: "{{ handbrake_base_path }}/{{ handbrake_inst_name }}/output"
+ type: Directory