summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPratyush Desai2021-12-19 20:41:16 +0530
committerPratyush Desai2021-12-19 20:41:16 +0530
commit628d53cb3f51749e2f22a5fc83b1c5592b848dac (patch)
treeca0e9662475f508ac499ed285521c2a1b79d1497
parent53bd1dc536c07e5230bafc6c1b05ffd6f8fd471b (diff)
downloadsystem-628d53cb3f51749e2f22a5fc83b1c5592b848dac.tar.gz
system-628d53cb3f51749e2f22a5fc83b1c5592b848dac.tar.bz2
system-628d53cb3f51749e2f22a5fc83b1c5592b848dac.zip
sh templates
-rw-r--r--scripts/sh/_templates/goapps/deploy_app.sh38
-rw-r--r--scripts/sh/_templates/goapps/remove_app.sh26
-rw-r--r--scripts/sh/_templates/goapps/update_app.sh26
-rw-r--r--systemd/owncast.service12
4 files changed, 102 insertions, 0 deletions
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="<repo_url.git>"
+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