From 8004e8a6eb01db695dc6c9f2d03fd4b47b6d22d4 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 23 Jul 2022 00:10:08 +0200 Subject: add role streaming/handbrake --- roles/streaming/handbrake/defaults/main.yml | 12 +++++ roles/streaming/handbrake/tasks/main.yml | 25 +++++++++ .../streaming/handbrake/templates/pod-spec.yml.j2 | 59 ++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 roles/streaming/handbrake/defaults/main.yml create mode 100644 roles/streaming/handbrake/tasks/main.yml create mode 100644 roles/streaming/handbrake/templates/pod-spec.yml.j2 (limited to 'roles') 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 -- cgit v1.2.3