瀏覽代碼

[IMP] systems bootup

Gogs 6 年之前
父節點
當前提交
b6c1b28f71

+ 13 - 0
amojeans.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Amojeans service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm amojeans
+ExecStart=/usr/bin/docker run -p 12500:8069 -p 12501:8071 -v /srv/odoo/amojeans/conf:/etc/odoo -v /srv/odoo/amojeans/custom-addons:/mnt/extra-addons -v /srv/odoo/amojeans/files:/var/lib/odoo --name amojeans --link database:db --net eiru --ip 172.19.0.105 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop amojeans
+
+[Install]
+WantedBy=multi-user.target

+ 13 - 0
athletic.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Athletic service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm athletic
+ExecStart=/usr/bin/docker run -p 10500:8069 -p 10501:8071 -v /srv/odoo/athletic/conf:/etc/odoo -v /srv/odoo/athletic/custom-addons:/mnt/extra-addons -v /srv/odoo/athletic/files:/var/lib/odoo --name athletic --link database:db --net eiru --ip 172.19.0.101 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop athletic
+
+[Install]
+WantedBy=multi-user.target

+ 13 - 0
database.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=PostgreSQL 9.4 service container
+Requires=docker.service network-online.target
+After=docker.service network-online.target
+
+[Service]
+Restart=always
+TimeoutStartSec=5s
+ExecStart=/usr/bin/docker start -a database
+ExecStop=/usr/bin/docker stop -t 2 database
+
+[Install]
+WantedBy=multi-user.target

+ 6 - 0
eiru-backup.service

@@ -0,0 +1,6 @@
+[Unit]
+Description=Database backup
+
+[Service]
+Type=oneshot
+ExecStart=/bin/bash /etc/systemd/system/eiru-backup postgres

+ 62 - 0
eiru-backup.sh

@@ -0,0 +1,62 @@
+#!/bin/bash
+
+CONTAINER="database"
+DB_USER="odoo"
+DATE=$(date +%Y%m%d)
+DAYS_TO_KEEP=15
+BKP_PATH="/mnt/backup/primary_local_bkp/pg"
+SYNC_PATH="/mnt/backup/secondary_local_bkp/pg"
+TMP_PATH="." 
+
+# perform database backup if docker exist
+perform_backups()
+{
+    local BKP_TODAY_PATH=$(printf "%s/backup_%s" "$BKP_PATH" "$DATE")
+
+    if [ ! -d "$BKP_TODAY_PATH" ]; then
+        mkdir "$BKP_TODAY_PATH"
+    fi
+
+    for DB_NAME in $@; do
+        local TMP_FILE=$(printf "%s/%s.tar" "$TMP_PATH" "$DB_NAME")
+
+        docker exec $CONTAINER pg_dump -U $DB_USER -d $DB_NAME -F tar -C -b -c -f $TMP_FILE
+        docker cp $CONTAINER:$TMP_FILE $BKP_TODAY_PATH
+        docker exec $CONTAINER rm $TMP_FILE
+    done
+}
+
+# delete old backups
+delete_old_backups() 
+{
+    find $1 -maxdepth 1 -type d -name "backup_*" -mtime +$2 -exec rm -rf '{}' ';'
+}
+
+# sync two backup paths
+sync_local_backups_path() 
+{
+    rsync -arz $1 $2
+}
+
+# sync two backup paths remotely
+remote_sync_backups_path()
+{
+    rsync -arz "ssh -p $1" "$2@$3:$4" $5
+}
+
+if [ ! -x "$(command -v docker)" ]; then
+    echo "cannot perform backup"
+    exit 1
+fi
+
+perform_backups $@
+delete_old_backups $BKP_PATH $DAYS_TO_KEEP
+
+if [ ! -x "$(command -v rsync)" ]; then
+    echo "cannot sync backups path"
+    exit 1
+fi
+
+sync_local_backups_path "$BKP_PATH/" $SYNC_PATH
+
+exit 0

+ 9 - 0
eiru-backup.timer

@@ -0,0 +1,9 @@
+[Unit]
+Description=Database backup timer
+
+[Timer]
+OnCalendar=*-*-* 23:59:00
+Persistent=true
+
+[Install]
+WantedBy=timers.target

+ 12 - 0
eiru-bootup.service

@@ -0,0 +1,12 @@
+[Unit]
+Description=eiru systems bootup
+Requires=docker.service network-online.target
+After=docker.service network-online.target
+
+[Service]
+Restart=always
+ExecStart=/usr/bin/docker start -a database
+ExecStop=/usr/bin/docker stop -t 2 database
+
+[Install]
+WantedBy=multi-user.target

+ 64 - 0
eiru-bootup.sh

@@ -0,0 +1,64 @@
+#!/bin/bash
+
+NET_NAME="eiru"
+ODOO_IMAGE="odoo/eiru:1.4"
+ODOO_PATH="/srv/odoo"
+DB_CONTAINER="database"
+
+start_database_system()
+{
+	# start postgresql
+	docker start $DB_CONTAINER
+	# start pgbouncer
+	docker run \
+		--name pgbouncer \
+		--volume /srv/pgbouncer/config:/etc/pgbouncer \
+		--volume /srv/pgbouncer/log:/var/log/pgbouncer \
+		--net $NET_NAME \
+		--ip 172.19.0.3 \
+		--tty pgbouncer:alpine
+}
+
+start_odoo_system()
+{
+	docker run \
+		--name $1 \
+		--publish "$2:8069" \
+		--volume "$ODOO_PATH/$1/conf:/etc/odoo" \
+		--volume "$ODOO_PATH/$1/custom-addons:/mnt/extra-addons" \
+		--volume "$ODOO_PATH/$1/files:/var/lib/odoo" \
+		--link "$DB_CONTAINER:db" \
+		--net $NET_NAME \
+		--ip $3 \
+		--tty $ODOO_IMAGE
+}
+
+start_odoo_systems()
+{
+	start_odoo_system golden 10000 "172.19.0.100"
+	start_odoo_system athletic 10500 "172.19.0.101"
+	start_odoo_system topjeans 11000 "172.19.0.102"
+	start_odoo_system kava 11500 "172.19.0.103"
+	start_odoo_system amojeans 12500 "172.19.0.105"
+	start_odoo_system world 13000 "172.19.0.106"
+	start_odoo_system clasi_calse 13500 "172.19.0.107"
+	start_odoo_system tuspasos 15000 "172.19.0.108"
+}
+
+start_monitor_systems()
+{
+	docker start influxdb
+	docker start telegraf
+	docker start grafana
+}
+
+if [ ! -x "$(command -v docker)" ]; then
+    echo "cannot bootup systems"
+    exit 1
+fi
+
+start_database_system
+start_odoo_systems
+start_monitor_systems
+
+exit 0

+ 13 - 0
golden.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Golden service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm golden
+ExecStart=/usr/bin/docker run -p 10000:8069 -p 10001:8071 -v /srv/odoo/golden/conf:/etc/odoo -v /srv/odoo/golden/custom-addons:/mnt/extra-addons -v /srv/odoo/golden/files:/var/lib/odoo --name golden --link database:db --net eiru --ip 172.19.0.100 --tty odoo/eiru:1.4
+ExecStop=/usr/bin/docker stop golden
+
+[Install]
+WantedBy=multi-user.target

+ 14 - 0
grafana.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=Grafana service container
+Requires=telegraf.service
+After=telegraf.service
+
+[Service]
+Restart=always
+TimeoutStartSec=5s
+ExecStart=/usr/bin/docker start -a grafana
+ExecStop=/usr/bin/docker stop -t 2 grafana
+
+[Install]
+WantedBy=multi-user.target
+

+ 14 - 0
influxdb.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=InfluxDB service container
+Requires=docker.service network-online.target
+After=docker.service network-online.target
+
+[Service]
+Restart=always
+TimeoutStartSec=5s
+ExecStart=/usr/bin/docker start -a influxdb
+ExecStop=/usr/bin/docker stop -t 2 influxdb
+
+[Install]
+WantedBy=multi-user.target
+

+ 13 - 0
kava.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Kava service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm kava
+ExecStart=/usr/bin/docker run -p 11500:8069 -p 11501:8071 -v /srv/odoo/kava/conf:/etc/odoo -v /srv/odoo/kava/custom-addons:/mnt/extra-addons -v /srv/odoo/kava/files:/var/lib/odoo --name kava --link database:db --net eiru --ip 172.19.0.103 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop kava
+
+[Install]
+WantedBy=multi-user.target

+ 10 - 0
mnt-backup-primary_local_bkp.mount

@@ -0,0 +1,10 @@
+[Unit]
+Description=Mount primary local backup storage drive
+DefaultDependencies=no
+Conflicts=umount.target
+Before=local-fs.target umount.target
+
+[Mount]
+What=/dev/sdb
+Where=/mnt/backup/primary_local_bkp
+Type=ext4

+ 10 - 0
mnt-backup-secondary_local_bkp.mount

@@ -0,0 +1,10 @@
+[Unit]
+Description=Mount secondary local backup storage drive
+DefaultDependencies=no
+Conflicts=umount.target
+Before=local-fs.target umount.target
+
+[Mount]
+What=/dev/sdc
+Where=/mnt/backup/secondary_local_bkp
+Type=ext4

+ 0 - 85
pg_backup.sh

@@ -1,85 +0,0 @@
-#!/bin/bash
-
-#     ██╗  ██╗ ██████╗ ██╗    ██╗    ████████╗ ██████╗     ██╗   ██╗███████╗███████╗
-#    ██║  ██║██╔═══██╗██║    ██║    ╚══██╔══╝██╔═══██╗    ██║   ██║██╔════╝██╔════╝
-#   ███████║██║   ██║██║ █╗ ██║       ██║   ██║   ██║    ██║   ██║███████╗█████╗  
-#  ██╔══██║██║   ██║██║███╗██║       ██║   ██║   ██║    ██║   ██║╚════██║██╔══╝  
-# ██║  ██║╚██████╔╝╚███╔███╔╝       ██║   ╚██████╔╝    ╚██████╔╝███████║███████╗
-#╚═╝  ╚═╝ ╚═════╝  ╚══╝╚══╝        ╚═╝    ╚═════╝      ╚═════╝ ╚══════╝╚══════╝
-#                                                                               
-# 1. set exec perms
-# chmod +x pg_backup.sh   
-# 2. run .pg_backup db_01 db_02 ... db_n
-#
-
-set -e
-
-# CONTAINER="database"
-CONTAINER="postgres"
-# DB_USER="odoo"
-DB_USER="postgres"
-DATE=$(date +%Y%m%d)
-TIME=$(date +%H%M%S)
-DAYS_TO_KEEP=7
-# BACKUP_PATH="/mnt/backup/local"
-# CLONE_PATH="/mnt/backup/nfs"
-BKP_PATH="/home/robert/test_pg_backup"
-SYNC_PATH="/home/robert/test_sync_backup"
-TMP_PATH="." 
-
-# perform database backup if docker exist
-perform_backups()
-{
-    if [ ! -x "$(command -v docker)" ]; then
-        echo "cannot perform backup"
-        exit 1
-    fi
-
-    local BKP_TODAY_PATH=$(printf "%s/backup_%s" "$BKP_PATH" "$DATE")
-
-    if [ ! -d "$BKP_TODAY_PATH" ]; then
-        mkdir "$BKP_TODAY_PATH"
-    fi
-
-    for DB_NAME in $@; do
-        local TMP_FILE=$(printf "%s/%s_%s.tar" "$TMP_PATH" "$DB_NAME" "$TIME")
-
-        docker exec $CONTAINER pg_dump -U $DB_USER -d $DB_NAME -F tar -C -b -c -f $TMP_FILE
-        docker cp $CONTAINER:$TMP_FILE $BKP_TODAY_PATH
-        docker exec $CONTAINER rm $TMP_FILE
-    done
-}
-
-# delete old backups
-delete_old_backups() 
-{
-    find $1 -maxdepth 1 -type d -name "backup_*" -mtime +$2 -exec rm -rf '{}' ';'
-}
-
-# sync two backup paths
-local_sync_backups_path() 
-{
-    if [ ! -x "$(command -v rsync)" ]; then
-        echo "cannot sync backups path"
-        exit 1
-    fi
-
-    rsync -arz $1 $2
-}
-
-# sync two backup paths remotely
-remote_sync_backups_path()
-{
-    if [ ! -x "$(command -v rsync)" ]; then
-        echo "cannot sync backups path"
-        exit 1
-    fi
-
-    rsync -arz "ssh -p $1" "$2@$3:$4" $5
-}
-
-perform_backups $@
-delete_old_backups $BKP_PATH $DAYS_TO_KEEP
-sync_local_backups_path $BKP_PATH $SYNC_PATH
-
-exit 0

+ 14 - 0
pgbouncer.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=Database proxy load balancer
+Requires=database.service
+After=database.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm pgbouncer
+ExecStart=/usr/bin/docker run --name pgbouncer --volume /srv/pgbouncer/config:/etc/pgbouncer --volume /srv/pgbouncer/log:/var/log/pgbouncer --net eiru --ip 172.19.0.3 --tty pgbouncer:alpine
+ExecStop=-/usr/bin/docker stop pgbouncer
+
+[Install]
+WantedBy=multi-user.target
+

+ 14 - 0
portainer.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=Portainer service container
+Requires=docker.service network-online.target
+After=docker.service network-online.target
+
+[Service]
+Restart=always
+TimeoutStartSec=5s
+ExecStart=/usr/bin/docker start -a portainer
+ExecStop=/usr/bin/docker stop -t 2 portainer
+
+[Install]
+WantedBy=multi-user.target
+

+ 14 - 0
telegraf.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=Telegraf service container
+Requires=influxdb.service
+After=influxdb.service
+
+[Service]
+Restart=always
+TimeoutStartSec=5s
+ExecStart=/usr/bin/docker start -a telegraf
+ExecStop=/usr/bin/docker stop -t 2 telegraf
+
+[Install]
+WantedBy=multi-user.target
+

+ 13 - 0
topjeans.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Topjeans service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm topjeans
+ExecStart=/usr/bin/docker run -p 11000:8069 -p 11001:8071 -v /srv/odoo/topjeans/conf:/etc/odoo -v /srv/odoo/topjeans/custom-addons:/mnt/extra-addons -v /srv/odoo/topjeans/files:/var/lib/odoo --name topjeans --link database:db --net eiru --ip 172.19.0.102 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop topjeans
+
+[Install]
+WantedBy=multi-user.target

+ 14 - 0
tuspasos.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=Tuspasos startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm tuspasos
+ExecStart=/usr/bin/docker run -p 15000:8069 -p 15001:8071 -v /srv/odoo/tuspasos/conf:/etc/odoo -v /srv/odoo/tuspasos/custom-addons:/mnt/extra-addons -v /srv/odoo/tuspasos/files:/var/lib/odoo --name tuspasos --link database:db --net eiru --ip 172.19.0.108 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop tuspasos
+
+[Install]
+WantedBy=multi-user.target
+

+ 13 - 0
world.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=World service startup service
+Requires=pgbouncer.service
+After=pgbouncer.service
+
+[Service]
+Restart=always
+ExecStartPre=-/usr/bin/docker rm world
+ExecStart=/usr/bin/docker run -p 13000:8069 -p 13001:8071 -v /srv/odoo/world/conf:/etc/odoo -v /srv/odoo/world/custom-addons:/mnt/extra-addons -v /srv/odoo/world/files:/var/lib/odoo --name world --link database:db --net eiru --ip 172.19.0.106 --tty odoo/eiru:1.4
+ExecStop=-/usr/bin/docker stop world
+
+[Install]
+WantedBy=multi-user.target