From 49d59f4fa7b6f6dc99bbb56e30c94b5ae692f2f7 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Wed, 25 Oct 2017 12:12:12 +0200 Subject: Move master files in lava-master --- lava-master/Dockerfile | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 lava-master/Dockerfile (limited to 'lava-master/Dockerfile') diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile new file mode 100644 index 0000000..942f1f6 --- /dev/null +++ b/lava-master/Dockerfile @@ -0,0 +1,70 @@ +FROM bitnami/minideb:stretch + +RUN apt-get update + +# Add services helper utilities to start and stop LAVA +COPY scripts/stop.sh . +COPY scripts/start.sh . + +# 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 + +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \ + locales \ + postgresql \ + screen \ + sudo \ + wget \ + 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 \ + qemu-system \ + qemu-system-arm \ + qemu-system-i386 \ + qemu-kvm \ + ser2net \ + u-boot-tools \ + python-setproctitle \ + && a2enmod proxy \ + && a2enmod proxy_http \ + && a2dissite 000-default \ + && a2ensite lava-server \ + && /stop.sh + +# Create a admin user (Insecure note, this creates a default user, username: admin/admin) +RUN /start.sh \ + && lava-server manage users add --passwd admin --staff --superuser --email admin@example.com admin \ + && /stop.sh + +# Install latest +RUN /start.sh \ + && git clone https://github.com/kernelci/lava-dispatcher.git -b master /root/lava-dispatcher \ + && cd /root/lava-dispatcher \ + && git checkout release \ + && git clone -b master https://github.com/kernelci/lava-server.git /root/lava-server \ + && cd /root/lava-server \ + && git checkout release \ + && git config --global user.name "Docker Build" \ + && git config --global user.email "info@kernelci.org" \ + && echo "cd \${DIR} && dpkg -i *.deb" >> /root/lava-server/share/debian-dev-build.sh \ + && cd /root/lava-dispatcher && /root/lava-server/share/debian-dev-build.sh -p lava-dispatcher \ + && cd /root/lava-server && /root/lava-server/share/debian-dev-build.sh -p lava-server \ + && /stop.sh + +COPY configs/tftpd-hpa /etc/default/tftpd-hpa + +EXPOSE 69/udp 80 3079 5555 5556 + +CMD /start.sh && bash -- cgit 1.2.3-korg From 626402f90d0f8435e9268268180d46fe3b58f040 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Wed, 25 Oct 2017 13:37:34 +0200 Subject: Handle generated files This commit add suppot for generated files by lalalab-gen.py. --- lava-master/Dockerfile | 7 ++++ lava-master/device-types/.empty | 0 lava-master/scripts/setup.sh | 74 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 lava-master/device-types/.empty create mode 100755 lava-master/scripts/setup.sh (limited to 'lava-master/Dockerfile') diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index 942f1f6..4fd4148 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -65,6 +65,13 @@ RUN /start.sh \ COPY configs/tftpd-hpa /etc/default/tftpd-hpa +COPY devices/ /root/devices/ +COPY device-types/ /root/device-types/ +COPY users/ /root/lava-users/ +COPY tokens/ /root/lava-callback-tokens/ +COPY scripts/setup.sh / +RUN /start.sh && /setup.sh && /stop.sh + EXPOSE 69/udp 80 3079 5555 5556 CMD /start.sh && bash diff --git a/lava-master/device-types/.empty b/lava-master/device-types/.empty new file mode 100644 index 0000000..e69de29 diff --git a/lava-master/scripts/setup.sh b/lava-master/scripts/setup.sh new file mode 100755 index 0000000..011a9c7 --- /dev/null +++ b/lava-master/scripts/setup.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +if [ -e /root/lava-users ];then + for ut in $(ls /root/lava-users) + do + # User is the filename + USER=$ut + . /root/lava-users/$ut + if [ -z "$PASSWORD" -o "$PASSWORD" = "$TOKEN" ];then + echo "Generating password..." + #Could be very long, should be avoided + PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + fi + echo "Adding username $USER DEBUG(with $TOKEN / $PASSWORD)" + lava-server manage users add --passwd $PASSWORD $USER || exit 1 + if [ ! -z "$TOKEN" ];then + lava-server manage tokens add --user $USER --secret $TOKEN || exit 1 + fi + done +fi + +if [ -e /root/lava-callback-tokens ];then + for ct in $(ls /root/lava-callback-tokens) + do + . /root/lava-callback-tokens/$ct + if [ -z "$USER" ];then + echo "Missing USER" + exit 1 + fi + if [ -z "$TOKEN" ];then + echo "Missing TOKEN for $USER" + exit 1 + fi + if [ -z "$DESCRIPTION" ];then + echo "Missing DESCRIPTION for $USER" + exit 1 + fi + echo "Adding $USER ($DESCRIPTION) DEBUG($TOKEN)" + lava-server manage tokens add --user $USER --secret $TOKEN --description $DESCRIPTION || exit 1 + done +fi + +# This directory is used for storing device-types already added +mkdir -p /root/.lavadocker/ +if [ -e /root/device-types ];then + for i in $(ls /root/device-types/*yaml) + do + cp /root/device-types/$i /etc/lava-server/dispatcher-config/device-types/ + devicetype=$(basename $i) + lava-server manage device-types add $devicetype || exit 1 + touch /root/.lavadocker/devicetype-$devicetype + done +fi + +for worker in $(ls /root/devices/) +do + echo "Adding worker $worker" + lava-server manage workers add $worker || exit $? + for device in $(ls /root/devices/$worker/) + do + devicename=$(echo $device | sed 's,.jinja2,,') + devicetype=$(grep -h extends /root/devices/$worker/$device| grep -o '[a-zA-Z0-9_-]*.jinja2' | sed 's,.jinja2,,') + if [ -e /root/.lavadocker/devicetype-$devicetype ];then + echo "Skip devicetype $devicetype" + else + echo "Add devicetype $devicetype" + lava-server manage device-types add $devicetype || exit $? + touch /root/.lavadocker/devicetype-$devicetype + fi + echo "Add device $devicename on $worker" + cp /root/devices/$worker/$device /etc/lava-server/dispatcher-config/devices/ || exit $? + lava-server manage devices add --device-type $devicetype --worker $worker $devicename || exit $? + done +done -- cgit 1.2.3-korg