From 832a4398e35dd99a2aaeb06c348e5527e12e2128 Mon Sep 17 00:00:00 2001 From: pierreozoux <pierre@ozoux.net> Date: Wed, 3 Dec 2014 17:09:41 +0000 Subject: [PATCH] Adds possibility to import from a dump --- scripts/backup-init.sh | 24 ------------------- scripts/import.sh | 6 ----- unit-files/init@.service | 31 +++++++++++++++++++++++++ unit-files/known-importer@.service | 7 +++--- unit-files/mysql-importer@.service | 6 ++--- unit-files/mysql@.service | 1 + unit-files/static-git-importer@.service | 7 +++--- unit-files/static-importer@.service | 7 +++--- unit-files/wordpress-importer@.service | 7 +++--- 9 files changed, 50 insertions(+), 46 deletions(-) delete mode 100755 scripts/backup-init.sh delete mode 100755 scripts/import.sh create mode 100644 unit-files/init@.service diff --git a/scripts/backup-init.sh b/scripts/backup-init.sh deleted file mode 100755 index f842e6c..0000000 --- a/scripts/backup-init.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -eux - -BACKUP_DESTINATION=`cat /data/BACKUP_DESTINATION` - -echo "Intitializing backups with $BACKUP_DESTINATION" -if [ ! -d /data/domains/$DOMAIN/.git ]; then - if [ `ssh $BACKUP_DESTINATION "test -d $DOMAIN"; echo $?` -eq 0 ]; then # git repo exists on the backup server - git clone $BACKUP_DESTINATION:$DOMAIN /data/domains/$DOMAIN - cd /data/domains/$DOMAIN - else - ssh $BACKUP_DESTINATION " \ - mkdir -p $DOMAIN; \ - cd $DOMAIN; \ - git init --bare;" - if [ ! -d /data/domains/$DOMAIN ]; then - mkdir /data/domains/$DOMAIN - fi - cd /data/domains/$DOMAIN - git init - git remote add origin $BACKUP_DESTINATION:$DOMAIN - fi - git config --local user.email "backups@`hostname`" - git config --local user.name "`hostname` hourly backups" -fi diff --git a/scripts/import.sh b/scripts/import.sh deleted file mode 100755 index c765ec4..0000000 --- a/scripts/import.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -eux - -if [ -d /data/import/$DOMAIN ]; then - cp -r /data/import/$DOMAIN/* /data/domains/$DOMAIN; - rm -rf /data/import/$DOMAIN; -fi diff --git a/unit-files/init@.service b/unit-files/init@.service new file mode 100644 index 0000000..f4051ca --- /dev/null +++ b/unit-files/init@.service @@ -0,0 +1,31 @@ +[Unit] +Description=Initializer + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStartPre=/bin/bash -euxc ' \ + BACKUP_DESTINATION=`cat /data/BACKUP_DESTINATION`; \ + echo "Intitializing backups with $BACKUP_DESTINATION"; \ + if [ ! -d /data/domains/%i/.git ]; then \ + if [ `ssh $BACKUP_DESTINATION "test -d %i"; echo $?` -eq 0 ]; then \ + git clone $BACKUP_DESTINATION:%i /data/domains/%i; \ + cd /data/domains/%i; \ + else \ + ssh $BACKUP_DESTINATION "mkdir -p %i;cd %i;git init --bare;"; \ + if [ ! -d /data/domains/%i ]; then \ + mkdir /data/domains/%i; \ + fi; \ + cd /data/domains/%i; \ + git init; \ + git remote add origin $BACKUP_DESTINATION:%i; \ + fi; \ + git config --local user.email "backups@`hostname`"; \ + git config --local user.name "`hostname` hourly backups"; \ + fi' + +ExecStart=/bin/bash -euxc ' \ + if [ -d /data/import/%i ]; then \ + cp -r /data/import/%i/* /data/domains/%i; \ + rm -rf /data/import/%i; \ + fi' diff --git a/unit-files/known-importer@.service b/unit-files/known-importer@.service index 588a63c..fc39b65 100644 --- a/unit-files/known-importer@.service +++ b/unit-files/known-importer@.service @@ -1,7 +1,11 @@ [Unit] Description=WordPress importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service After=mysql@%i.service Before=known@%i.service Before=backup@%i.timer @@ -12,9 +16,6 @@ BindsTo=known@%i.service [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ known_folder=/data/domains/%i/known; \ diff --git a/unit-files/mysql-importer@.service b/unit-files/mysql-importer@.service index c8d4628..fffab47 100644 --- a/unit-files/mysql-importer@.service +++ b/unit-files/mysql-importer@.service @@ -2,6 +2,7 @@ Description=MySQL importer # Dependency ordering +After=init@%i.service Before=mysql@%i.service # Dependency binding @@ -13,10 +14,7 @@ RemainAfterExit=yes ExecStart=/bin/bash -euxc ' \ mysql_folder=/data/domains/%i/mysql; \ if [ ! -d /data/runtime/domains/%i/mysql ]; then \ - if [ -d $mysql_folder ]; then \ - echo develop import mysql feature; \ - exit 1; \ - else \ + if [ ! -d $mysql_folder ]; then \ mkdir -p $mysql_folder; \ pass=`echo $RANDOM ${date} | md5sum | base64 | cut -c-10`; \ echo MYSQL_PASS=$pass > $mysql_folder/.env; \ diff --git a/unit-files/mysql@.service b/unit-files/mysql@.service index 6b8bb75..809d0ff 100644 --- a/unit-files/mysql@.service +++ b/unit-files/mysql@.service @@ -17,6 +17,7 @@ ExecStartPre=-/usr/bin/docker rm %p-%i ExecStart=/usr/bin/docker run \ --name %p-%i \ -v /data/runtime/domains/%i/%p/db_files:/var/lib/mysql \ + -e STARTUP_SQL="/data/domains/%i/%p/dump.sql" \ --env-file /data/domains/%i/%p/.env \ indiehosters/mysql ExecReload=/usr/bin/docker restart %p-%i diff --git a/unit-files/static-git-importer@.service b/unit-files/static-git-importer@.service index 9ebdb3d..8e1949a 100644 --- a/unit-files/static-git-importer@.service +++ b/unit-files/static-git-importer@.service @@ -1,16 +1,17 @@ [Unit] Description=static importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service Before=static-git@%i.service Before=backup@%i.timer [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ git_folder=/data/runtime/domains/%i/static-git; \ diff --git a/unit-files/static-importer@.service b/unit-files/static-importer@.service index ee1b695..88579c8 100644 --- a/unit-files/static-importer@.service +++ b/unit-files/static-importer@.service @@ -1,16 +1,17 @@ [Unit] Description=static importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service Before=static@%i.service Before=backup@%i.timer [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ static_folder=/data/domains/%i/static/www-content; \ diff --git a/unit-files/wordpress-importer@.service b/unit-files/wordpress-importer@.service index c192c41..4db5c23 100644 --- a/unit-files/wordpress-importer@.service +++ b/unit-files/wordpress-importer@.service @@ -1,7 +1,11 @@ [Unit] Description=WordPress importer +# Requirements +Requires=init@%i.service + # Dependency ordering +After=init@%i.service After=mysql@%i.service Before=wordpress@%i.service Before=backup@%i.timer @@ -12,9 +16,6 @@ BindsTo=wordpress@%i.service [Service] Type=oneshot RemainAfterExit=yes -Environment=DOMAIN=%i -ExecStartPre=/data/indiehosters/scripts/backup-init.sh -ExecStartPre=/data/indiehosters/scripts/import.sh ExecStart=/bin/bash -euxc ' \ cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem; \ wordpress_folder=/data/domains/%i/wordpress; \ -- GitLab