summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dan/ele-helene.yml6
-rw-r--r--inventory/host_vars/ele-helene.yml33
-rw-r--r--inventory/hosts.ini1
-rw-r--r--roles/streaming/player/defaults/main.yml5
-rw-r--r--roles/streaming/player/tasks/main.yml8
-rw-r--r--roles/streaming/player/templates/pod-spec.yml.j239
6 files changed, 91 insertions, 1 deletions
diff --git a/dan/ele-helene.yml b/dan/ele-helene.yml
index 26678ab1..e3913843 100644
--- a/dan/ele-helene.yml
+++ b/dan/ele-helene.yml
@@ -6,8 +6,8 @@
- role: core/base
- role: core/sshd/base
- role: core/zsh
- - role: core/cpu-microcode
- role: core/ntp
+ - role: core/cpu-microcode
- role: apt-repo/spreadspace
- role: nginx/base
- role: monitoring/prometheus/exporter
@@ -15,6 +15,10 @@
- role: vm/host/network
- role: installer/debian/base
- role: installer/openbsd/base
+ - role: streaming/blackmagic/desktopvideo
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: streaming/player
# post_tasks:
# - name: install smstools
# apt:
diff --git a/inventory/host_vars/ele-helene.yml b/inventory/host_vars/ele-helene.yml
index b33a488d..7055d6c2 100644
--- a/inventory/host_vars/ele-helene.yml
+++ b/inventory/host_vars/ele-helene.yml
@@ -1,6 +1,7 @@
---
install_interface: eno1
+system_lvm_volume_size_root: 4G
install:
efi: true
disks:
@@ -30,6 +31,7 @@ apt_repo_components:
spreadspace_apt_repo_components:
- main
- prometheus
+ - container
ntp_variant: chrony
@@ -70,3 +72,34 @@ prometheus_job_multitarget_blackbox__probe:
- instance: "ssh-{{ inventory_hostname }}"
target: "{{ network_zones.lan.prefix | ipaddr(network_zones.lan.offsets[inventory_hostname]) | ipaddr('address') }}:{{ ansible_port | default(22) }}"
module: ssh_banner
+
+
+blackmagic_desktopvideo_version: 12.2.2a6
+blackmagic_desktopvideo_include_gui: yes
+
+
+docker_pkg_provider: docker-com
+
+docker_storage:
+ type: lvm
+ vg: "{{ host_name }}"
+ lv: docker
+ size: 10G
+ fs: ext4
+
+kubelet_storage:
+ type: lvm
+ vg: "{{ host_name }}"
+ lv: kubelet
+ size: 5G
+ fs: ext4
+
+kubernetes_version: 1.24.2
+kubernetes_container_runtime: docker
+kubernetes_standalone_max_pods: 42
+kubernetes_standalone_cni_variant: with-portmap
+
+player_inst_name: emc-feed
+player_ffmpeg_image_version: bullseye-decklink11.7-2022-06-12.26
+player_input: [ '-f', 'live_flv', '-rtmp_live', 'live', '-i', "rtmp://{{ network_zones.cc_leslie.prefix | ipaddr(network_zones.cc_leslie.offsets['ele-thetys']) | ipaddr('address') }}/emc-feed/full" ]
+player_output: [ '-pix_fmt', 'uyvy422', '-s', '1920x1080', '-f', 'decklink', 'DeckLink SDI' ]
diff --git a/inventory/hosts.ini b/inventory/hosts.ini
index 78d3092c..a2c64c20 100644
--- a/inventory/hosts.ini
+++ b/inventory/hosts.ini
@@ -526,6 +526,7 @@ ch-apps
sk-cloudio
ele-media
ele-thetys
+ele-helene
ele-coturn
ele-jitsi
s2-thetys
diff --git a/roles/streaming/player/defaults/main.yml b/roles/streaming/player/defaults/main.yml
new file mode 100644
index 00000000..280aa2ea
--- /dev/null
+++ b/roles/streaming/player/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+# player_inst_name: feed
+# player_ffmpeg_image_version: bullseye-decklink11.7-2022-06-12.26
+# player_input: [ '-f', 'live_flv', '-rtmp_live', 'live', '-i', 'rtmp://192.0.2.1/feed/full' ]
+# player_output: [ '-pix_fmt', 'uyvy422', '-s', '1920x1080', '-filter:v', 'fps=fps=25', '-top', '1', '-flags:v', '+ilme+ildct', '-f', 'decklink', 'DeckLink SDI' ]
diff --git a/roles/streaming/player/tasks/main.yml b/roles/streaming/player/tasks/main.yml
new file mode 100644
index 00000000..68e8ec2f
--- /dev/null
+++ b/roles/streaming/player/tasks/main.yml
@@ -0,0 +1,8 @@
+---
+- name: install pod manifest
+ vars:
+ kubernetes_standalone_pod:
+ name: "player-{{ player_inst_name }}"
+ spec: "{{ lookup('template', 'pod-spec.yml.j2') }}"
+ include_role:
+ name: kubernetes/standalone/pod
diff --git a/roles/streaming/player/templates/pod-spec.yml.j2 b/roles/streaming/player/templates/pod-spec.yml.j2
new file mode 100644
index 00000000..a4eff23f
--- /dev/null
+++ b/roles/streaming/player/templates/pod-spec.yml.j2
@@ -0,0 +1,39 @@
+containers:
+- name: player
+ image: registry.gitlab.com/spreadspace/docker/ffmpeg:{{ player_ffmpeg_image_version }}
+ imagePullPolicy: Always
+ command:
+ - /usr/bin/ffmpeg
+ args:
+{% for param in player_input %}
+ - '{{ param }}'
+{% endfor %}
+{% for param in player_output %}
+ - '{{ param }}'
+{% endfor %}
+ securityContext:
+ privileged: true
+ volumeMounts:
+ - name: decklink-device
+ mountPath: /dev/blackmagic
+ - name: decklink-libs
+ subPath: libDeckLinkAPI.so
+ mountPath: /usr/lib/libDeckLinkAPI.so
+ readOnly: true
+ - name: decklink-libs
+ subPath: libDeckLinkPreviewAPI.so
+ mountPath: /usr/lib/libDeckLinkPreviewAPI.so
+ readOnly: true
+ - name: decklink-libs
+ subPath: blackmagic
+ mountPath: /usr/lib/blackmagic
+ readOnly: true
+
+volumes:
+- name: decklink-device
+ hostPath:
+ path: /dev/blackmagic
+- name: decklink-libs
+ hostPath:
+ type: Directory
+ path: /usr/lib/