From e578f4538dad9aa7cd977094e58293e847990d30 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 30 Jul 2021 21:54:12 +0200 Subject: move dolmetsch-raspi to generic folder --- dan/ele-dolmetsch-raspi.yml | 2 +- roles/elevate/dolmetsch-raspi/defaults/main.yml | 3 - roles/elevate/dolmetsch-raspi/handlers/main.yml | 4 -- roles/elevate/dolmetsch-raspi/tasks/main.yml | 81 ---------------------- .../templates/dolmetschctl.service.j2 | 22 ------ .../templates/dolmetschctld.service.j2 | 21 ------ .../dolmetsch-raspi/templates/rtp-recv.service.j2 | 22 ------ .../dolmetsch-raspi/templates/rtp-recv.sh.j2 | 14 ---- .../dolmetsch-raspi/templates/rtp-send.service.j2 | 22 ------ .../dolmetsch-raspi/templates/rtp-send.sh.j2 | 14 ---- roles/streaming/dolmetsch-raspi/defaults/main.yml | 3 + roles/streaming/dolmetsch-raspi/handlers/main.yml | 4 ++ roles/streaming/dolmetsch-raspi/tasks/main.yml | 81 ++++++++++++++++++++++ .../templates/dolmetschctl.service.j2 | 22 ++++++ .../templates/dolmetschctld.service.j2 | 21 ++++++ .../dolmetsch-raspi/templates/rtp-recv.service.j2 | 22 ++++++ .../dolmetsch-raspi/templates/rtp-recv.sh.j2 | 14 ++++ .../dolmetsch-raspi/templates/rtp-send.service.j2 | 22 ++++++ .../dolmetsch-raspi/templates/rtp-send.sh.j2 | 14 ++++ 19 files changed, 204 insertions(+), 204 deletions(-) delete mode 100644 roles/elevate/dolmetsch-raspi/defaults/main.yml delete mode 100644 roles/elevate/dolmetsch-raspi/handlers/main.yml delete mode 100644 roles/elevate/dolmetsch-raspi/tasks/main.yml delete mode 100644 roles/elevate/dolmetsch-raspi/templates/dolmetschctl.service.j2 delete mode 100644 roles/elevate/dolmetsch-raspi/templates/dolmetschctld.service.j2 delete mode 100644 roles/elevate/dolmetsch-raspi/templates/rtp-recv.service.j2 delete mode 100644 roles/elevate/dolmetsch-raspi/templates/rtp-recv.sh.j2 delete mode 100644 roles/elevate/dolmetsch-raspi/templates/rtp-send.service.j2 delete mode 100644 roles/elevate/dolmetsch-raspi/templates/rtp-send.sh.j2 create mode 100644 roles/streaming/dolmetsch-raspi/defaults/main.yml create mode 100644 roles/streaming/dolmetsch-raspi/handlers/main.yml create mode 100644 roles/streaming/dolmetsch-raspi/tasks/main.yml create mode 100644 roles/streaming/dolmetsch-raspi/templates/dolmetschctl.service.j2 create mode 100644 roles/streaming/dolmetsch-raspi/templates/dolmetschctld.service.j2 create mode 100644 roles/streaming/dolmetsch-raspi/templates/rtp-recv.service.j2 create mode 100644 roles/streaming/dolmetsch-raspi/templates/rtp-recv.sh.j2 create mode 100644 roles/streaming/dolmetsch-raspi/templates/rtp-send.service.j2 create mode 100644 roles/streaming/dolmetsch-raspi/templates/rtp-send.sh.j2 diff --git a/dan/ele-dolmetsch-raspi.yml b/dan/ele-dolmetsch-raspi.yml index be9788e7..6097cb8d 100644 --- a/dan/ele-dolmetsch-raspi.yml +++ b/dan/ele-dolmetsch-raspi.yml @@ -6,4 +6,4 @@ - role: core/base - role: core/sshd/base - role: core/zsh - - role: elevate/dolmetsch-raspi + - role: streaming/dolmetsch-raspi diff --git a/roles/elevate/dolmetsch-raspi/defaults/main.yml b/roles/elevate/dolmetsch-raspi/defaults/main.yml deleted file mode 100644 index 987a0481..00000000 --- a/roles/elevate/dolmetsch-raspi/defaults/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -dolmetsch_raspi_golang_version: 1.11.5 -dolmetsch_raspi_golang_checksum: "sha256:b26b53c94923f78955236386fee0725ef4e76b6cb47e0df0ed0c0c4724e7b198" diff --git a/roles/elevate/dolmetsch-raspi/handlers/main.yml b/roles/elevate/dolmetsch-raspi/handlers/main.yml deleted file mode 100644 index bb7fde2b..00000000 --- a/roles/elevate/dolmetsch-raspi/handlers/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -- name: reload systemd - systemd: - daemon_reload: yes diff --git a/roles/elevate/dolmetsch-raspi/tasks/main.yml b/roles/elevate/dolmetsch-raspi/tasks/main.yml deleted file mode 100644 index 10d55766..00000000 --- a/roles/elevate/dolmetsch-raspi/tasks/main.yml +++ /dev/null @@ -1,81 +0,0 @@ ---- -- name: install packages - apt: - name: - - gstreamer1.0-tools - - gstreamer1.0-plugins-base - - gstreamer1.0-plugins-good - - gstreamer1.0-plugins-bad - - gstreamer1.0-alsa - - git - - libasound2-dev - - telnet - -- name: download golang tarball - get_url: - url: "https://dl.google.com/go/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" - dest: "/usr/local/src/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" - checksum: "{{ dolmetsch_raspi_golang_checksum }}" - -- name: check current goloang version (if any) - command: /usr/local/go/bin/go version - ignore_errors: yes - check_mode: no - changed_when: false - register: golang_version - -- name: update golang installation - when: golang_version is failed or golang_version.stdout != ("go version go" + dolmetsch_raspi_golang_version + " linux/arm") - block: - - name: remove old golang installation - file: - path: /usr/local/go - state: absent - - - name: extract the golang tarball - unarchive: - src: "/usr/local/src/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" - dest: /usr/local - copy: no - -- name: prepare dolmetschctl install path - file: - path: /opt/dolmetschctl - state: directory - -- name: build dolmetschctl (server and client) - loop: - - dolmetschctl - - dolmetschctld - command: "/usr/local/go/bin/go get spreadspace.org/dolmetschctl/cmd/{{ item }}" - args: - creates: "/opt/dolmetschctl/bin/{{ item }}" - environment: - GOPATH: /opt/dolmetschctl - -- name: install dolmetschctl systemd units - loop: - - dolmetschctl - - dolmetschctld - template: - src: "{{ item }}.service.j2" - dest: "/etc/systemd/system/{{ item }}.service" - notify: reload systemd - -- name: install rtp send/receive scripts - loop: - - rtp-recv - - rtp-send - template: - src: "{{ item }}.sh.j2" - dest: "/usr/local/bin/{{ item }}.sh" - mode: 0750 - -- name: install rtp send/receive systemd units - loop: - - rtp-recv - - rtp-send - template: - src: "{{ item }}.service.j2" - dest: "/etc/systemd/system/{{ item }}.service" - notify: reload systemd diff --git a/roles/elevate/dolmetsch-raspi/templates/dolmetschctl.service.j2 b/roles/elevate/dolmetsch-raspi/templates/dolmetschctl.service.j2 deleted file mode 100644 index cd97cc3e..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/dolmetschctl.service.j2 +++ /dev/null @@ -1,22 +0,0 @@ -[Unit] -Description=dolmetschctl Client - -[Service] -{# TODO: remove hardcoded IP #} -ExecStart=/opt/dolmetschctl/bin/dolmetschctl 192.168.48.102:8234 -Restart=always -RestartSecs=1s -StartLimitBurst=10 -StartLimitIntervalSec=5s -CapabilityBoundingSet=CAP_NET_BIND_SERVICE -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=strict -ProtectHome=yes -ProtectKernelTunables=yes -ProtectControlGroups=yes -RestrictRealtime=yes -RestrictAddressFamilies=AF_INET AF_INET6 - -[Install] -WantedBy=multi-user.target diff --git a/roles/elevate/dolmetsch-raspi/templates/dolmetschctld.service.j2 b/roles/elevate/dolmetsch-raspi/templates/dolmetschctld.service.j2 deleted file mode 100644 index c8c9ca79..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/dolmetschctld.service.j2 +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=dolmetschctl Server - -[Service] -ExecStart=/opt/dolmetschctl/bin/dolmetschctld -Restart=always -RestartSecs=1s -StartLimitBurst=10 -StartLimitIntervalSec=5s -CapabilityBoundingSet=CAP_NET_BIND_SERVICE -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=strict -ProtectHome=yes -ProtectKernelTunables=yes -ProtectControlGroups=yes -RestrictRealtime=yes -RestrictAddressFamilies=AF_INET AF_INET6 - -[Install] -WantedBy=multi-user.target diff --git a/roles/elevate/dolmetsch-raspi/templates/rtp-recv.service.j2 b/roles/elevate/dolmetsch-raspi/templates/rtp-recv.service.j2 deleted file mode 100644 index b338ff65..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/rtp-recv.service.j2 +++ /dev/null @@ -1,22 +0,0 @@ -[Unit] -Description=RTP Receiver - -[Service] -{# TODO: remove hardcoded IP #} -ExecStart=/usr/local/bin/rtp-recv.sh 192.168.48.103 -Restart=always -RestartSecs=1s -StartLimitBurst=10 -StartLimitIntervalSec=5s -CapabilityBoundingSet=CAP_NET_BIND_SERVICE -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=strict -ProtectHome=yes -ProtectKernelTunables=yes -ProtectControlGroups=yes -RestrictRealtime=yes -RestrictAddressFamilies=AF_INET AF_INET6 - -[Install] -WantedBy=multi-user.target diff --git a/roles/elevate/dolmetsch-raspi/templates/rtp-recv.sh.j2 b/roles/elevate/dolmetsch-raspi/templates/rtp-recv.sh.j2 deleted file mode 100644 index c9a89f95..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/rtp-recv.sh.j2 +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -HOST="$1" -if [ -z "$HOST" ]; then - echo "usage: $0 " - exit 1 -fi - -#export GST_DEBUG=3 -exec gst-launch-1.0 rtpbin name=rtpbin latency=50 \ - udpsrc port=5000 caps="application/x-rtp,media=(string)audio,encoding-name=(string)OPUS,clock-rate=(int)48000" ! rtpbin.recv_rtp_sink_0 \ - rtpbin. ! rtpopusdepay ! opusdec ! alsasink \ - udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \ - rtpbin.send_rtcp_src_0 ! udpsink "host=$HOST" port=5001 sync=false async=false diff --git a/roles/elevate/dolmetsch-raspi/templates/rtp-send.service.j2 b/roles/elevate/dolmetsch-raspi/templates/rtp-send.service.j2 deleted file mode 100644 index 40a029ab..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/rtp-send.service.j2 +++ /dev/null @@ -1,22 +0,0 @@ -[Unit] -Description=RTP Sender - -[Service] -{# TODO: remove hardcoded IP #} -ExecStart=/usr/local/bin/rtp-send.sh 192.168.48.102 -Restart=always -RestartSecs=1s -StartLimitBurst=10 -StartLimitIntervalSec=5s -CapabilityBoundingSet=CAP_NET_BIND_SERVICE -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=strict -ProtectHome=yes -ProtectKernelTunables=yes -ProtectControlGroups=yes -RestrictRealtime=yes -RestrictAddressFamilies=AF_INET AF_INET6 - -[Install] -WantedBy=multi-user.target diff --git a/roles/elevate/dolmetsch-raspi/templates/rtp-send.sh.j2 b/roles/elevate/dolmetsch-raspi/templates/rtp-send.sh.j2 deleted file mode 100644 index 9754b620..00000000 --- a/roles/elevate/dolmetsch-raspi/templates/rtp-send.sh.j2 +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -HOST="$1" -if [ -z "$HOST" ]; then - echo "usage: $0 " - exit 1 -fi - -#export GST_DEBUG=3 -exec gst-launch-1.0 rtpbin name=rtpbin \ - alsasrc device=hw:CODEC ! 'audio/x-raw,rate=48000,channels=1' ! opusenc ! rtpopuspay ! rtpbin.send_rtp_sink_0 \ - rtpbin.send_rtp_src_0 ! udpsink "host=$HOST" port=5000 \ - rtpbin.send_rtcp_src_0 ! udpsink "host=$HOST" port=5001 sync=false async=false \ - udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 diff --git a/roles/streaming/dolmetsch-raspi/defaults/main.yml b/roles/streaming/dolmetsch-raspi/defaults/main.yml new file mode 100644 index 00000000..987a0481 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/defaults/main.yml @@ -0,0 +1,3 @@ +--- +dolmetsch_raspi_golang_version: 1.11.5 +dolmetsch_raspi_golang_checksum: "sha256:b26b53c94923f78955236386fee0725ef4e76b6cb47e0df0ed0c0c4724e7b198" diff --git a/roles/streaming/dolmetsch-raspi/handlers/main.yml b/roles/streaming/dolmetsch-raspi/handlers/main.yml new file mode 100644 index 00000000..bb7fde2b --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/handlers/main.yml @@ -0,0 +1,4 @@ +--- +- name: reload systemd + systemd: + daemon_reload: yes diff --git a/roles/streaming/dolmetsch-raspi/tasks/main.yml b/roles/streaming/dolmetsch-raspi/tasks/main.yml new file mode 100644 index 00000000..10d55766 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/tasks/main.yml @@ -0,0 +1,81 @@ +--- +- name: install packages + apt: + name: + - gstreamer1.0-tools + - gstreamer1.0-plugins-base + - gstreamer1.0-plugins-good + - gstreamer1.0-plugins-bad + - gstreamer1.0-alsa + - git + - libasound2-dev + - telnet + +- name: download golang tarball + get_url: + url: "https://dl.google.com/go/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" + dest: "/usr/local/src/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" + checksum: "{{ dolmetsch_raspi_golang_checksum }}" + +- name: check current goloang version (if any) + command: /usr/local/go/bin/go version + ignore_errors: yes + check_mode: no + changed_when: false + register: golang_version + +- name: update golang installation + when: golang_version is failed or golang_version.stdout != ("go version go" + dolmetsch_raspi_golang_version + " linux/arm") + block: + - name: remove old golang installation + file: + path: /usr/local/go + state: absent + + - name: extract the golang tarball + unarchive: + src: "/usr/local/src/go{{ dolmetsch_raspi_golang_version }}.linux-armv6l.tar.gz" + dest: /usr/local + copy: no + +- name: prepare dolmetschctl install path + file: + path: /opt/dolmetschctl + state: directory + +- name: build dolmetschctl (server and client) + loop: + - dolmetschctl + - dolmetschctld + command: "/usr/local/go/bin/go get spreadspace.org/dolmetschctl/cmd/{{ item }}" + args: + creates: "/opt/dolmetschctl/bin/{{ item }}" + environment: + GOPATH: /opt/dolmetschctl + +- name: install dolmetschctl systemd units + loop: + - dolmetschctl + - dolmetschctld + template: + src: "{{ item }}.service.j2" + dest: "/etc/systemd/system/{{ item }}.service" + notify: reload systemd + +- name: install rtp send/receive scripts + loop: + - rtp-recv + - rtp-send + template: + src: "{{ item }}.sh.j2" + dest: "/usr/local/bin/{{ item }}.sh" + mode: 0750 + +- name: install rtp send/receive systemd units + loop: + - rtp-recv + - rtp-send + template: + src: "{{ item }}.service.j2" + dest: "/etc/systemd/system/{{ item }}.service" + notify: reload systemd diff --git a/roles/streaming/dolmetsch-raspi/templates/dolmetschctl.service.j2 b/roles/streaming/dolmetsch-raspi/templates/dolmetschctl.service.j2 new file mode 100644 index 00000000..cd97cc3e --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/dolmetschctl.service.j2 @@ -0,0 +1,22 @@ +[Unit] +Description=dolmetschctl Client + +[Service] +{# TODO: remove hardcoded IP #} +ExecStart=/opt/dolmetschctl/bin/dolmetschctl 192.168.48.102:8234 +Restart=always +RestartSecs=1s +StartLimitBurst=10 +StartLimitIntervalSec=5s +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +NoNewPrivileges=yes +PrivateTmp=yes +ProtectSystem=strict +ProtectHome=yes +ProtectKernelTunables=yes +ProtectControlGroups=yes +RestrictRealtime=yes +RestrictAddressFamilies=AF_INET AF_INET6 + +[Install] +WantedBy=multi-user.target diff --git a/roles/streaming/dolmetsch-raspi/templates/dolmetschctld.service.j2 b/roles/streaming/dolmetsch-raspi/templates/dolmetschctld.service.j2 new file mode 100644 index 00000000..c8c9ca79 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/dolmetschctld.service.j2 @@ -0,0 +1,21 @@ +[Unit] +Description=dolmetschctl Server + +[Service] +ExecStart=/opt/dolmetschctl/bin/dolmetschctld +Restart=always +RestartSecs=1s +StartLimitBurst=10 +StartLimitIntervalSec=5s +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +NoNewPrivileges=yes +PrivateTmp=yes +ProtectSystem=strict +ProtectHome=yes +ProtectKernelTunables=yes +ProtectControlGroups=yes +RestrictRealtime=yes +RestrictAddressFamilies=AF_INET AF_INET6 + +[Install] +WantedBy=multi-user.target diff --git a/roles/streaming/dolmetsch-raspi/templates/rtp-recv.service.j2 b/roles/streaming/dolmetsch-raspi/templates/rtp-recv.service.j2 new file mode 100644 index 00000000..b338ff65 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/rtp-recv.service.j2 @@ -0,0 +1,22 @@ +[Unit] +Description=RTP Receiver + +[Service] +{# TODO: remove hardcoded IP #} +ExecStart=/usr/local/bin/rtp-recv.sh 192.168.48.103 +Restart=always +RestartSecs=1s +StartLimitBurst=10 +StartLimitIntervalSec=5s +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +NoNewPrivileges=yes +PrivateTmp=yes +ProtectSystem=strict +ProtectHome=yes +ProtectKernelTunables=yes +ProtectControlGroups=yes +RestrictRealtime=yes +RestrictAddressFamilies=AF_INET AF_INET6 + +[Install] +WantedBy=multi-user.target diff --git a/roles/streaming/dolmetsch-raspi/templates/rtp-recv.sh.j2 b/roles/streaming/dolmetsch-raspi/templates/rtp-recv.sh.j2 new file mode 100644 index 00000000..c9a89f95 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/rtp-recv.sh.j2 @@ -0,0 +1,14 @@ +#!/bin/bash + +HOST="$1" +if [ -z "$HOST" ]; then + echo "usage: $0 " + exit 1 +fi + +#export GST_DEBUG=3 +exec gst-launch-1.0 rtpbin name=rtpbin latency=50 \ + udpsrc port=5000 caps="application/x-rtp,media=(string)audio,encoding-name=(string)OPUS,clock-rate=(int)48000" ! rtpbin.recv_rtp_sink_0 \ + rtpbin. ! rtpopusdepay ! opusdec ! alsasink \ + udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \ + rtpbin.send_rtcp_src_0 ! udpsink "host=$HOST" port=5001 sync=false async=false diff --git a/roles/streaming/dolmetsch-raspi/templates/rtp-send.service.j2 b/roles/streaming/dolmetsch-raspi/templates/rtp-send.service.j2 new file mode 100644 index 00000000..40a029ab --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/rtp-send.service.j2 @@ -0,0 +1,22 @@ +[Unit] +Description=RTP Sender + +[Service] +{# TODO: remove hardcoded IP #} +ExecStart=/usr/local/bin/rtp-send.sh 192.168.48.102 +Restart=always +RestartSecs=1s +StartLimitBurst=10 +StartLimitIntervalSec=5s +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +NoNewPrivileges=yes +PrivateTmp=yes +ProtectSystem=strict +ProtectHome=yes +ProtectKernelTunables=yes +ProtectControlGroups=yes +RestrictRealtime=yes +RestrictAddressFamilies=AF_INET AF_INET6 + +[Install] +WantedBy=multi-user.target diff --git a/roles/streaming/dolmetsch-raspi/templates/rtp-send.sh.j2 b/roles/streaming/dolmetsch-raspi/templates/rtp-send.sh.j2 new file mode 100644 index 00000000..9754b620 --- /dev/null +++ b/roles/streaming/dolmetsch-raspi/templates/rtp-send.sh.j2 @@ -0,0 +1,14 @@ +#!/bin/bash + +HOST="$1" +if [ -z "$HOST" ]; then + echo "usage: $0 " + exit 1 +fi + +#export GST_DEBUG=3 +exec gst-launch-1.0 rtpbin name=rtpbin \ + alsasrc device=hw:CODEC ! 'audio/x-raw,rate=48000,channels=1' ! opusenc ! rtpopuspay ! rtpbin.send_rtp_sink_0 \ + rtpbin.send_rtp_src_0 ! udpsink "host=$HOST" port=5000 \ + rtpbin.send_rtcp_src_0 ! udpsink "host=$HOST" port=5001 sync=false async=false \ + udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 -- cgit v1.2.3