summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-25 14:40:04 +0100
committerSimon Rettberg2019-03-25 14:40:04 +0100
commita64e391944b334934ee3b2aec4f243f27baa7c15 (patch)
tree0fa12ec82dd276c5dfee6f71feb52a3e4a6fe643
parent[SSPS] slxadmin config: Add bios list.json URL (diff)
downloadsetup-scripts-a64e391944b334934ee3b2aec4f243f27baa7c15.tar.gz
setup-scripts-a64e391944b334934ee3b2aec4f243f27baa7c15.tar.xz
setup-scripts-a64e391944b334934ee3b2aec4f243f27baa7c15.zip
[SS.S] Make bootup slx-admin trigger its own service
Having it as a cron entry makes it impossible to order dependencies, like taskmanager, mariadb, etc.
-rw-r--r--satellit_installer/includes/90-patch_slxadmin.inc4
-rw-r--r--satellit_installer/static_files/slxadmin-boot.service13
-rwxr-xr-xsatellit_installer/static_files/slxadmin-bootscript11
-rw-r--r--satellit_installer/static_files/slxadmin-crontab1
-rwxr-xr-xsatellit_upgrader/pack-update.sh3
-rw-r--r--satellit_upgrader/updater.template.sh6
6 files changed, 35 insertions, 3 deletions
diff --git a/satellit_installer/includes/90-patch_slxadmin.inc b/satellit_installer/includes/90-patch_slxadmin.inc
index c55e367..99f4c16 100644
--- a/satellit_installer/includes/90-patch_slxadmin.inc
+++ b/satellit_installer/includes/90-patch_slxadmin.inc
@@ -25,5 +25,9 @@ patch_slxadmin () {
# Add system cronjob to execute slx-admin cronjob
cp "$BASEDIR/static_files/slxadmin-crontab" "/etc/cron.d/slx-admin" || perror "could not install slxadmin crontab"
cp "$BASEDIR/static_files/slxadmin-cronscript" "/opt/openslx/slxadmin-cronscript" || perror "could not install slxadmin cronscript"
+ # Add script and service to trigger init hook
+ cp "$BASEDIR/static_files/slxadmin-bootscript" "/opt/openslx/slxadmin-bootscript" || perror "could not install slxadmin bootscript"
+ cp "$BASEDIR/static_files/slxadmin-boot.service" "/etc/systemd/system/slxadmin-boot.service" || perror "could not install slxadmin boot service"
+ ln -nfs "../slxadmin-boot.service" "/etc/systemd/system/multi-user.target.wants/slxadmin-boot.service" || perror "Could not enable slxadmin boot service"
}
diff --git a/satellit_installer/static_files/slxadmin-boot.service b/satellit_installer/static_files/slxadmin-boot.service
new file mode 100644
index 0000000..21bdf51
--- /dev/null
+++ b/satellit_installer/static_files/slxadmin-boot.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trigger init hooks of slx-admin
+RefuseManualStart=yes
+Before=lighttpd.service
+After=mariadb.service mysql.service network.target taskmanager.service
+Wants=network-online.target
+
+[Service]
+Type=oneshot
+ExecStart=/opt/openslx/slxadmin-bootscript
+
+[Install]
+WantedBy=multi-user.target
diff --git a/satellit_installer/static_files/slxadmin-bootscript b/satellit_installer/static_files/slxadmin-bootscript
new file mode 100755
index 0000000..98aafed
--- /dev/null
+++ b/satellit_installer/static_files/slxadmin-bootscript
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+FILE=$(mktemp)
+
+if ! php /srv/openslx/www/slx-admin/api.php init > "$FILE" 2>&1; then
+ php /srv/openslx/www/slx-admin/api.php init --crashreport "$FILE"
+fi
+
+rm -- "$FILE"
+sleep 1
+exit 0
diff --git a/satellit_installer/static_files/slxadmin-crontab b/satellit_installer/static_files/slxadmin-crontab
index ecae4b1..440ac35 100644
--- a/satellit_installer/static_files/slxadmin-crontab
+++ b/satellit_installer/static_files/slxadmin-crontab
@@ -3,6 +3,5 @@
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-@reboot www-data sleep 15 && php /srv/openslx/www/slx-admin/api.php init > /dev/null 2>&1
*/5 * * * * www-data /opt/openslx/slxadmin-cronscript
diff --git a/satellit_upgrader/pack-update.sh b/satellit_upgrader/pack-update.sh
index a6aa75d..a485baf 100755
--- a/satellit_upgrader/pack-update.sh
+++ b/satellit_upgrader/pack-update.sh
@@ -206,9 +206,10 @@ if [ -z "$LEAN" ]; then
addinstallfile "slxadmin-config.php"
addinstallfile "slxadmin-cronscript"
addinstallfile "slxadmin-crontab"
+ addinstallfile "slxadmin-bootscript"
+ addinstallfile "slxadmin-boot.service"
addinstallfile "patch_lighttpd_phpchildren"
- # Not quite ideal, watch out for similar names
addinstallfile "dnbd3/dnbd3-server.service"
addinstallfile "dnbd3/is-enabled"
addinstallfile "dnbd3/server.conf"
diff --git a/satellit_upgrader/updater.template.sh b/satellit_upgrader/updater.template.sh
index 7a3322a..bfc434c 100644
--- a/satellit_upgrader/updater.template.sh
+++ b/satellit_upgrader/updater.template.sh
@@ -340,10 +340,14 @@ if [ -n "$TGZ_SLXADMIN" ]; then
echo "$TARGET_WEBIF_VERSION" > "${PATH_SLXADMIN}/version"
echo "Config updated"
fi
- # New cronscript supplied
+ # New scripts supplied
diffcp "slxadmin-cronscript" "/opt/openslx/slxadmin-cronscript"
+ diffcp "slxadmin-bootscript" "/opt/openslx/slxadmin-bootscript"
# New crontab supplied
diffcp "slxadmin-crontab" "/etc/cron.d/slx-admin"
+ # Service
+ diffcp "slxadmin-boot.service" "/etc/systemd/system/slxadmin-boot.service"
+ ln -nfs "../slxadmin-boot.service" "/etc/systemd/system/multi-user.target.wants/slxadmin-boot.service"
# Ask about ipxe / pxelinux
if [ -z "$bootmodule" ] || ! [ -d "$PATH_SLXADMIN/modules-available/$bootmodule" ]; then
bootmodule="serversetup-bwlp-pxelinux"