diff --git a/unit-files/b-u@.service b/unit-files/b-u@.service new file mode 100644 index 0000000000000000000000000000000000000000..87bcd8a90715a52addce62fdede15b5a9b881a5a --- /dev/null +++ b/unit-files/b-u@.service @@ -0,0 +1,32 @@ +[Unit] +Description=Back up data from %i + +[Service] +Type=oneshot +TimeoutStartSec=0 +WorkingDirectory=/data/domains/%i/ +EnvironmentFile=/etc/environment +ExecStartPre=/bin/bash -euxc ' \ + /bin/docker run \ + --rm \ + --name clean-%i \ + -e PASSPHRASE \ + -v /root:/root \ + indiepaas/duplicity \ + remove-older-than 10D --force \ + sftp://${BACKUP_DESTINATION}/%i' +ExecStartPre=/bin/bash -euxc '/data/domains/%i/BACKUP' +ExecStart=/bin/bash -euxc ' \ + /bin/docker run \ + --rm \ + --name backup-%i \ + -e PASSPHRASE \ + -h backup.container \ + --cpu-shares=40 \ + -v /root:/root \ + -v /data/domains/%i:/backup indiepaas/duplicity \ + --full-if-older-than 1W \ + --encrypt-key ${ENCRYPT_KEY} \ + /backup \ + sftp://${BACKUP_DESTINATION}/%i' + diff --git a/unit-files/b-u@.timer b/unit-files/b-u@.timer new file mode 100644 index 0000000000000000000000000000000000000000..31fe97a7800d2504a8bbad0be27f4af2edfb7c0b --- /dev/null +++ b/unit-files/b-u@.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Hourly backup of www and mysql content. + +# Dependency binding +BindsTo=u@%i.service + +[Timer] +OnActiveSec=20 +OnUnitActiveSec=60min +AccuracySec=50min + diff --git a/unit-files/d-u@.service b/unit-files/d-u@.service new file mode 100644 index 0000000000000000000000000000000000000000..270777ab9b3381cf47fd30565fb266919fa8ff1d --- /dev/null +++ b/unit-files/d-u@.service @@ -0,0 +1,24 @@ +[Unit] +Description=%p for %i etcd registration + +# Requirements +Requires=etcd.service + +# Dependency binding +BindsTo=u@%i.service + +[Service] +Type=oneshot +RemainAfterExit=yes +Environment=URL=%i +ExecStart=/bin/bash -xc ' \ + ip=""; \ + while [ -z $ip ]; \ + do \ + container_name=`echo ${URL}_web_1 | sed "s/\.//g" | sed "s/-//g"`; \ + ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' $container_name`; \ + sleep 1; \ + done; \ + etcdctl --peers 172.17.42.1:4001 set /services/web/%i \'{"ip":"\'$ip\'", "port":"80"}\';' +ExecStop=-/usr/bin/etcdctl rm /services/web/%i + diff --git a/unit-files/u@.service b/unit-files/u@.service new file mode 100644 index 0000000000000000000000000000000000000000..33da13f64947ce0908133bb4b1ae5f37ae7acd29 --- /dev/null +++ b/unit-files/u@.service @@ -0,0 +1,27 @@ +[Unit] +Description=%p-%i + +# Requirements +Requires=docker.service +Requires=d-u@%i.service +Requires=b-u@%i.timer + +# Dependency ordering +After=docker.service +Before=d-u@%i.service +Before=b-u@%i.timer + +[Service] +Restart=always +RestartSec=10 +TimeoutStartSec=60 +TimeoutStopSec=15 +WorkingDirectory=/data/domains/%i/ +ExecStartPre=/bin/cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem +ExecStartPre=-/opt/bin/docker-compose rm -f +ExecStart=/opt/bin/docker-compose up +ExecStop=/opt/bin/docker-compose stop + +[Install] +WantedBy=multi-user.target +