From 3fa641e74700acad323fe19f1eadb285aeb1dd66 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Mon, 13 Jul 2020 13:25:52 +0200 Subject: Permit to set the postgres lavaserver password By setting pg_lava_password, the final lavaserver password will be set to this value. --- lava-master/Dockerfile | 2 ++ lava-master/entrypoint.d/01_setup.sh | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'lava-master') diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index 5bf989a..6396253 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -39,6 +39,8 @@ COPY apache2/ /etc/apache2/ # Fixes 'postgresql ERROR: invalid locale name: "en_US.UTF-8"' when restoring a backup RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 +COPY pg_lava_password /root + # TODO: send this fix to upstream RUN sed -i 's,find /root/entrypoint.d/ -type f,find /root/entrypoint.d/ -type f | sort,' /root/entrypoint.sh # TODO: send this fix to upstream diff --git a/lava-master/entrypoint.d/01_setup.sh b/lava-master/entrypoint.d/01_setup.sh index 53db47e..95b180b 100755 --- a/lava-master/entrypoint.d/01_setup.sh +++ b/lava-master/entrypoint.d/01_setup.sh @@ -1,8 +1,11 @@ #!/bin/bash # always reset the lavaserver user, since its password could have been reseted in a "docker build --nocache" -if [ ! -e /root/pg_lava_password ];then - < /dev/urandom tr -dc A-Za-z0-9 | head -c16 > /root/pg_lava_password +if [ ! -s /root/pg_lava_password ];then + echo "DEBUG: Generating a random LAVA password" + < /dev/urandom tr -dc A-Za-z0-9 | head -c16 > /root/pg_lava_password +else + echo "DEBUG: use the given LAVA password" fi sudo -u postgres psql -c "ALTER USER lavaserver WITH PASSWORD '$(cat /root/pg_lava_password)';" || exit $? if [ -e /etc/lava-server/instance.conf ];then -- cgit From 8c9b84ce25577375d7c0c73229881d6e14a27ee8 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Mon, 13 Jul 2020 13:29:22 +0200 Subject: Do not apply backup twice If we use persistend_db, a restart with an image containing a backup will re-apply the backup and so overrun current DB. So when backup is used, apply a flag to not reuse it. --- lava-master/entrypoint.d/01_setup.sh | 47 ++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'lava-master') diff --git a/lava-master/entrypoint.d/01_setup.sh b/lava-master/entrypoint.d/01_setup.sh index 95b180b..e3619f7 100755 --- a/lava-master/entrypoint.d/01_setup.sh +++ b/lava-master/entrypoint.d/01_setup.sh @@ -16,32 +16,37 @@ else sed -i "s,PASSWORD:.*,PASSWORD: '$(cat /root/pg_lava_password)'," /etc/lava-server/settings.d/00-database.yaml || exit $? fi -if [ -e /root/backup/db_lavaserver.gz ];then - gunzip /root/backup/db_lavaserver.gz || exit $? -fi - -if [ -e /root/backup/db_lavaserver ];then - echo "Restore database from backup" - sudo -u postgres psql < /root/backup/db_lavaserver || exit $? - yes yes | lava-server manage migrate || exit $? - echo "Restore jobs output from backup" - rm -r /var/lib/lava-server/default/media/job-output/* +# verify that the backup was not already applied in case of persistent_db +if [ ! -e "/var/lib/postgresql/lava-docker.backup_done" ];then + if [ -e /root/backup/db_lavaserver.gz ];then + gunzip /root/backup/db_lavaserver.gz || exit $? + fi - # allow using different folder for tar operations (/tmp by default) - TMPDIR=${TMPDIR:-/tmp} + if [ -e /root/backup/db_lavaserver ];then + echo "Restore database from backup" + sudo -u postgres psql < /root/backup/db_lavaserver || exit $? + yes yes | lava-server manage migrate || exit $? + echo "Restore jobs output from backup" + rm -r /var/lib/lava-server/default/media/job-output/* - tar xzf /root/backup/joboutput.tar.gz || exit $? -fi - lava-server manage makemigrations - yes yes | lava-server manage migrate || exit $? + # allow using different folder for tar operations (/tmp by default) + TMPDIR=${TMPDIR:-/tmp} -if [ -e /root/backup/devices.tar.gz ];then - echo "INFO: Restoring devices files" - tar xzf /root/backup/devices.tar.gz - chown -R lavaserver:lavaserver /etc/lava-server/dispatcher-config/devices + tar xzf /root/backup/joboutput.tar.gz || exit $? + chown -R lavaserver:lavaserver /var/lib/lava-server/default/media/job-output/ + touch /var/lib/postgresql/lava-docker.backup_done + fi + if [ -e /root/backup/devices.tar.gz ];then + echo "INFO: Restoring devices files" + tar xzf /root/backup/devices.tar.gz + chown -R lavaserver:lavaserver /etc/lava-server/dispatcher-config/devices + fi +else + echo "DEBUG: backup already applied" fi -chown -R lavaserver:lavaserver /var/lib/lava-server/default/media/job-output/ +lava-server manage makemigrations +yes yes | lava-server manage migrate || exit $? # default site is set as example.com if [ -e /root/lava_http_fqdn ];then -- cgit