From 628d53cb3f51749e2f22a5fc83b1c5592b848dac Mon Sep 17 00:00:00 2001 From: Pratyush Desai Date: Sun, 19 Dec 2021 20:41:16 +0530 Subject: [PATCH] sh templates --- scripts/sh/_templates/goapps/deploy_app.sh | 38 ++++++++++++++++++++++ scripts/sh/_templates/goapps/remove_app.sh | 26 +++++++++++++++ scripts/sh/_templates/goapps/update_app.sh | 26 +++++++++++++++ systemd/owncast.service | 12 +++++++ 4 files changed, 102 insertions(+) create mode 100644 scripts/sh/_templates/goapps/deploy_app.sh create mode 100644 scripts/sh/_templates/goapps/remove_app.sh create mode 100644 scripts/sh/_templates/goapps/update_app.sh create mode 100644 systemd/owncast.service diff --git a/scripts/sh/_templates/goapps/deploy_app.sh b/scripts/sh/_templates/goapps/deploy_app.sh new file mode 100644 index 0000000..74762ad --- /dev/null +++ b/scripts/sh/_templates/goapps/deploy_app.sh @@ -0,0 +1,38 @@ +#!/bin/sh +DISTRIB=$(awk -F= '/^NAME/{print $2}' /etc/os-release) +echo "Detected $DISTRIB" +if [ ${DISTRIB} = "openSUSE Leap" ] +echo +then +if [ ! -d /opt/app ] +then +echo "app not found. Preparing Install" + +# Distrib package manager installs deps +zypper in --no-recommends -y git make +REPO="" +mkdir /opt/app +useradd -rUd /opt/app -s /bin/false app +chown app:app /opt/app +chmod 750 /opt/app +usermod -aG app pratyush +usermod -aG app georg +sudo -u app git clone $REPO /opt/app/app-git +cd /opt/app/app-git || exit +sudo -u app make build +sudo -u app chmod +x app +ln -s /opt/app/app-git/app /opt/app/app + +# Insert application specific commands here. + +# consider a change in directory structure based on applications? +# update the statement below accordingly. +sudo cp path/to/unitfile /etc/systemd/system/app.service +sudo systemctl daemon-reload +sudo systemctl enable --now app.service +else +echo "Existing app installation or leftovers detected. Consider remove_app.sh." +fi +else +echo "This is currently only compatible with SUSE Leap nodes." +fi \ No newline at end of file diff --git a/scripts/sh/_templates/goapps/remove_app.sh b/scripts/sh/_templates/goapps/remove_app.sh new file mode 100644 index 0000000..1def777 --- /dev/null +++ b/scripts/sh/_templates/goapps/remove_app.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# Check for existing installation in `/opt`. + +if [ ! -d /opt/app ] +then +echo "This will kill running app services and cause data loss! Remove app? " +read text -r + +# https://github.com/koalaman/shellcheck/wiki/SC3015 +# https://github.com/koalaman/shellcheck/wiki/SC2003 +# Need a POSIX compatible regex soln below! +expr "$text" : "^[Yy]$" > /dev/null +if [ "$text" ] +then +echo "Removing app" +systemctl disable --now app.service || true +rm -f /etc/systemd/system/app.service +rm -rf /opt/app +userdel -f app +groupdel -f app +echo "OK" +fi +else +echo "Could not find a compatible installation of app." +fi diff --git a/scripts/sh/_templates/goapps/update_app.sh b/scripts/sh/_templates/goapps/update_app.sh new file mode 100644 index 0000000..bbc0b1e --- /dev/null +++ b/scripts/sh/_templates/goapps/update_app.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# Only supports git source builds currently. + +if [ -f /opt/app/app-git/app ] +then +echo "This will immediately stop app if it is running. Update app on this system? " +read text -r +expr "$text" : "^[Yy]$" > /dev/null +if [ "$text" ] +then +# Inconsistent `sudo` use? +systemctl stop app.service + +# Update golang using `deploy_go` + +cd /opt/app/app-git || exit +rm -f app +git pull +sudo -u app make build +# insert misc commands as needed. +systemctl start app.service +fi +else +echo "app does not seem to be installed. Consider deploy_app.sh." +fi \ No newline at end of file diff --git a/systemd/owncast.service b/systemd/owncast.service new file mode 100644 index 0000000..a5de359 --- /dev/null +++ b/systemd/owncast.service @@ -0,0 +1,12 @@ +[Unit] +Description=Owncast Service + +[Service] +Type=simple +WorkingDirectory=/opt/owncast/ +ExecStart=/opt/owncast/owncast +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target \ No newline at end of file