diff options
Diffstat (limited to 'lava-master-base')
-rw-r--r-- | lava-master-base/Dockerfile | 56 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-logs | 97 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-master | 97 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-server-gunicorn | 99 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-slave | 98 | ||||
-rwxr-xr-x | lava-master-base/scripts/start.sh | 40 | ||||
-rwxr-xr-x | lava-master-base/scripts/stop.sh | 10 |
7 files changed, 497 insertions, 0 deletions
diff --git a/lava-master-base/Dockerfile b/lava-master-base/Dockerfile new file mode 100644 index 0000000..ef4ff2f --- /dev/null +++ b/lava-master-base/Dockerfile @@ -0,0 +1,56 @@ +FROM bitnami/minideb:stretch + +RUN echo "deb http://deb.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list + +RUN apt-get update + +# Install debian packages used by the container +# Configure apache to run the lava server +# Log the hostname used during install for the slave name +RUN echo 'lava-server lava-server/instance-name string lava-docker-instance' | debconf-set-selections \ + && echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections \ + && echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections + +# e2fsprogs is for libguestfs +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \ + locales \ + postgresql \ + screen \ + sudo \ + wget \ + e2fsprogs \ + gnupg \ + vim + +RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc \ + && apt-key add production-repo.key.asc \ + && echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list \ + && apt-get clean && apt-get update + +RUN service postgresql start \ + && DEBIAN_FRONTEND=noninteractive apt-get -y install lava \ + && sudo -u postgres psql lavaserver -c "DELETE FROM lava_scheduler_app_worker WHERE lava_scheduler_app_worker.hostname = 'example.com';" \ + && service postgresql stop + +RUN a2enmod proxy \ + && a2enmod proxy_http \ + && a2dissite 000-default \ + && a2ensite lava-server + +# Add services helper utilities to start and stop LAVA +COPY scripts/stop.sh . +COPY scripts/start.sh . +COPY scripts/lava-logs /etc/init.d/ +RUN chmod 755 /etc/init.d/lava-logs +COPY scripts/lava-master /etc/init.d/ +RUN chmod 755 /etc/init.d/lava-master +COPY scripts/lava-slave /etc/init.d/ +RUN chmod 755 /etc/init.d/lava-slave +COPY scripts/lava-server-gunicorn /etc/init.d/ +RUN chmod 755 /etc/init.d/lava-server-gunicorn + +RUN dpkg -l | grep lava + +EXPOSE 80 3079 5555 5556 + +CMD /start.sh && while [ true ];do sleep 365d; done diff --git a/lava-master-base/scripts/lava-logs b/lava-master-base/scripts/lava-logs new file mode 100644 index 0000000..69b2f82 --- /dev/null +++ b/lava-master-base/scripts/lava-logs @@ -0,0 +1,97 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lava-logs +# Required-Start: $time +# Required-Stop: $time +# X-Stop-After: sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: lava-logs +# Description: lava-logs +### END INIT INFO + +# +# Author: Corentin LABBE <clabbe@baylibre.com> +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="lava-logs" +NAME=lava-logs +LOGLEVEL=DEBUG + +DAEMON=/usr/bin/lava-server +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +[ -r /etc/lava-server/$NAME ] && . /etc/lava-server/$NAME + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- manage lava-logs --level $LOGLEVEL $SOCKET $MASTER_SOCKET $IPV6 $ENCRYPT $MASTER_CERT $SLAVES_CERTS +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) + log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + restart|force-reload) + $0 stop + $0 start + ;; + try-restart) + $0 status >/dev/null 2>&1 && $0 restart + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/lava-master-base/scripts/lava-master b/lava-master-base/scripts/lava-master new file mode 100644 index 0000000..3bd75aa --- /dev/null +++ b/lava-master-base/scripts/lava-master @@ -0,0 +1,97 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lava-master +# Required-Start: $time +# Required-Stop: $time +# X-Stop-After: sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: lava-master +# Description: lava-master +### END INIT INFO + +# +# Author: Corentin LABBE <clabbe@baylibre.com> +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="lava-master" +NAME=lava-master +LOGLEVEL=DEBUG + +DAEMON=/usr/bin/lava-server +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +[ -r /etc/lava-server/$NAME ] && . /etc/lava-server/$NAME + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- manage lava-master --level $LOGLEVEL $SOCKET $MASTER_SOCKET $IPV6 $ENCRYPT $MASTER_CERT $SLAVES_CERTS +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) + log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + restart|force-reload) + $0 stop + $0 start + ;; + try-restart) + $0 status >/dev/null 2>&1 && $0 restart + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/lava-master-base/scripts/lava-server-gunicorn b/lava-master-base/scripts/lava-server-gunicorn new file mode 100644 index 0000000..217ad57 --- /dev/null +++ b/lava-master-base/scripts/lava-server-gunicorn @@ -0,0 +1,99 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lava-server-gunicorn +# Required-Start: $time +# Required-Stop: $time +# X-Stop-After: sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: lava-server-gunicorn +# Description: lava-server-gunicorn +### END INIT INFO + +# +# Author: Corentin LABBE <clabbe@baylibre.com> +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="lava-server-gunicorn" +NAME=lava-server-gunicorn +LOGLEVEL=DEBUG +WORKERS=4 +LOGFILE=/var/log/lava-server/gunicorn.log +RELOAD= +DAEMON=/usr/bin/gunicorn3 +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +[ -r /etc/lava-server/$NAME ] && . /etc/lava-server/$NAME + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- lava_server.wsgi --log-level $LOGLEVEL --log-file $LOGFILE -u lavaserver -g lavaserver --workers $WORKERS $RELOAD +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) + log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + restart|force-reload) + $0 stop + $0 start + ;; + try-restart) + $0 status >/dev/null 2>&1 && $0 restart + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/lava-master-base/scripts/lava-slave b/lava-master-base/scripts/lava-slave new file mode 100644 index 0000000..3ba00f7 --- /dev/null +++ b/lava-master-base/scripts/lava-slave @@ -0,0 +1,98 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lava-slave +# Required-Start: $time +# Required-Stop: $time +# X-Stop-After: sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: lava-slave +# Description: lava-slave +### END INIT INFO + +# +# Author: Corentin LABBE <clabbe@baylibre.com> +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="lava-slave" +NAME=lava-slave + +DAEMON=/usr/bin/lava-slave +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +MASTER_URL=tcp://localhost:5556 +LOGGER_URL=tcp://localhost:5555 +LOGLEVEL=DEBUG + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME +[ -r /etc/lava-dispatcher/$NAME ] && . /etc/lava-dispatcher/$NAME + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- --level $LOGLEVEL --master $MASTER_URL --socket-addr $LOGGER_URL $IPV6 $ENCRYPT $MASTER_CERT $SLAVE_CERT $HOSTNAME +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) + log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + restart|force-reload) + $0 stop + $0 start + ;; + try-restart) + $0 status >/dev/null 2>&1 && $0 restart + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/lava-master-base/scripts/start.sh b/lava-master-base/scripts/start.sh new file mode 100755 index 0000000..c34fe34 --- /dev/null +++ b/lava-master-base/scripts/start.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +postgres-ready () { + echo "Waiting for lavaserver database to be active" + while (( $(ps -ef | grep -v grep | grep postgres | grep lavaserver | wc -l) == 0 )) + do + echo -n "." + sleep 1 + done + echo + echo "[ ok ] LAVA server ready" +} + +start () { + echo "Starting $1" + if (( $(ps -ef | grep -v grep | grep -v add_device | grep -v dispatcher-config | grep "$1" | wc -l) > 0 )) + then + echo "$1 appears to be running" + else + service "$1" start + fi +} + +#remove lava-pid files incase the image is stored without first stopping the services +rm -f /var/run/lava-*.pid 2> /dev/null + +/etc/init.d/postgresql start + +/setup.sh || exit $? + +start apache2 || exit $? +start lava-logs || exit $? +start lava-master || exit $? +start lava-coordinator || exit $? +start lava-slave || exit $? +start lava-server-gunicorn || exit $? +start tftpd-hpa || exit $? + +postgres-ready +service apache2 reload #added after the website not running a few times on boot diff --git a/lava-master-base/scripts/stop.sh b/lava-master-base/scripts/stop.sh new file mode 100755 index 0000000..35d503f --- /dev/null +++ b/lava-master-base/scripts/stop.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +service lava-master stop +service lava-slave stop +service lava-logs stop +service lava-coordinator stop +service lava-server-gunicorn stop +service apache2 stop +/etc/init.d/postgresql stop +service tftpd-hpa stop |