From a64e391944b334934ee3b2aec4f243f27baa7c15 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 25 Mar 2019 14:40:04 +0100 Subject: [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. --- satellit_installer/includes/90-patch_slxadmin.inc | 4 ++++ satellit_installer/static_files/slxadmin-boot.service | 13 +++++++++++++ satellit_installer/static_files/slxadmin-bootscript | 11 +++++++++++ satellit_installer/static_files/slxadmin-crontab | 1 - satellit_upgrader/pack-update.sh | 3 ++- satellit_upgrader/updater.template.sh | 6 +++++- 6 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 satellit_installer/static_files/slxadmin-boot.service create mode 100755 satellit_installer/static_files/slxadmin-bootscript 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" -- cgit v1.2.3-55-g7522