From 336398e61990c3695ab0463408d95665f32db445 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 16 Mar 2024 19:20:34 +0100 Subject: add companion role --- roles/streaming/companion/defaults/main.yml | 5 ++++ roles/streaming/companion/handlers/main.yml | 3 +++ roles/streaming/companion/tasks/main.yml | 23 ++++++++++++++++ .../streaming/companion/templates/pod-spec.yml.j2 | 22 +++++++++++++++ roles/streaming/companion/templates/udev.rules.j2 | 31 ++++++++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 roles/streaming/companion/defaults/main.yml create mode 100644 roles/streaming/companion/handlers/main.yml create mode 100644 roles/streaming/companion/tasks/main.yml create mode 100644 roles/streaming/companion/templates/pod-spec.yml.j2 create mode 100644 roles/streaming/companion/templates/udev.rules.j2 (limited to 'roles/streaming') diff --git a/roles/streaming/companion/defaults/main.yml b/roles/streaming/companion/defaults/main.yml new file mode 100644 index 00000000..e09159f4 --- /dev/null +++ b/roles/streaming/companion/defaults/main.yml @@ -0,0 +1,5 @@ +--- +# companion_storage: +# type: ... + +# companion_version: 3.2.2 diff --git a/roles/streaming/companion/handlers/main.yml b/roles/streaming/companion/handlers/main.yml new file mode 100644 index 00000000..821c7fa8 --- /dev/null +++ b/roles/streaming/companion/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: reload udev rules + command: "udevadm control --reload" diff --git a/roles/streaming/companion/tasks/main.yml b/roles/streaming/companion/tasks/main.yml new file mode 100644 index 00000000..b222dee2 --- /dev/null +++ b/roles/streaming/companion/tasks/main.yml @@ -0,0 +1,23 @@ +--- +- name: prepare storage volume + vars: + storage_volume: "{{ companion_storage | combine({'owner': 1000, 'group': 1000}) }}" + include_role: + name: "storage/{{ companion_storage.type }}/volume" + +- set_fact: + companion_basepath: "{{ storage_volume_mountpoint }}" + +- name: install udev rules + template: + src: udev.rules.j2 + dest: /etc/udev/rules.d/90-companion.rules + notify: reload udev rules + +- name: install pod manifest + vars: + kubernetes_standalone_pod: + name: companion + spec: "{{ lookup('template', 'pod-spec.yml.j2') }}" + include_role: + name: kubernetes/standalone/pod diff --git a/roles/streaming/companion/templates/pod-spec.yml.j2 b/roles/streaming/companion/templates/pod-spec.yml.j2 new file mode 100644 index 00000000..f01637fe --- /dev/null +++ b/roles/streaming/companion/templates/pod-spec.yml.j2 @@ -0,0 +1,22 @@ +hostNetwork: true +containers: +- name: companion + image: ghcr.io/bitfocus/companion/companion:v{{ companion_version }} + imagePullPolicy: Always + securityContext: + privileged: true + supplementalGroups: + - 46 # plugdev + volumeMounts: + - name: dev-usb + mountPath: /dev/bus/usb + - name: data + mountPath: /companion +volumes: +- name: dev-usb + hostPath: + path: /dev/bus/usb +- name: data + hostPath: + type: Directory + path: "{{ companion_basepath }}" diff --git a/roles/streaming/companion/templates/udev.rules.j2 b/roles/streaming/companion/templates/udev.rules.j2 new file mode 100644 index 00000000..d40e8048 --- /dev/null +++ b/roles/streaming/companion/templates/udev.rules.j2 @@ -0,0 +1,31 @@ +SUBSYSTEM=="input", GROUP="input", MODE="0666" + +# infinitton +SUBSYSTEM=="usb", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="1f40", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="1f40", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="1f41", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="1f41", MODE:="666", GROUP="plugdev" + +# streamdeck +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0084", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0086", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="008f", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0090", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0084", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0086", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="008f", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0090", MODE:="666", GROUP="plugdev" + +# xkeys +SUBSYSTEM=="usb", ATTRS{idVendor}=="05f3", MODE:="666", GROUP="plugdev" +KERNEL=="hidraw*", ATTRS{idVendor}=="05f3", MODE:="666", GROUP="plugdev" -- cgit v1.2.3