-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdeploy.bash
More file actions
executable file
·134 lines (112 loc) · 6.82 KB
/
deploy.bash
File metadata and controls
executable file
·134 lines (112 loc) · 6.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/env bash
# Deployment script - intended to run on Drones servers
# Colors
C_RESET='\033[0m'
C_RED='\033[1;31m'
C_GREEN='\033[1;32m'
C_YELLOW='\033[1;33m'
# Logs
PREFIX_INFO="${C_GREEN}[INFO]${C_RESET} [$(date +%d-%m\ %T)]"
PREFIX_WARN="${C_YELLOW}[WARN]${C_RESET} [$(date +%d-%m\ %T)]"
PREFIX_CRIT="${C_RED}[CRIT]${C_RESET} [$(date +%d-%m\ %T)]"
# Main
APP_DIR="${APP_DIR:-/home/ubuntu/drones}"
AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
PYTHON_ENV_DIR="${PYTHON_ENV_DIR:-/home/ubuntu/drones-env}"
PYTHON="${PYTHON_ENV_DIR}/bin/python"
PIP="${PYTHON_ENV_DIR}/bin/pip"
SCRIPT_DIR="$(realpath $(dirname $0))"
SECRETS_DIR="${SECRETS_DIR:-/home/ubuntu/drones-secrets}"
PARAMETERS_ENV_PATH="${SECRETS_DIR}/app.env"
DRONES_SERVICE_FILE="drones.service"
# Drones statistics generator
DRONES_STATISTICS_SERVICE_FILE="drones-statistics.service"
DRONES_STATISTICS_TIMER_FILE="drones-statistics.timer"
# Drones Humbug report loader
DRONES_HUMBUG_REPORT_LOADER_FILE="drones-humbug-reports.service"
# Drones journal rules
DRONES_RULE_UNLOCK_SERVICE_FILE="drones-rule-unlock.service"
DRONES_RULE_UNLOCK_TIMER_FILE="drones-rule-unlock.timer"
DRONES_RULE_CLEAN_LARGE_JOURNALS_SERVICE_FILE="drones-clean-large-journals.service"
DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE="drones-clean-large-journals.timer"
# Drones token rules
DRONES_RULE_CLEAN_OLD_TOKENS_SERVICE_FILE="drones-clean-old-tokens.service"
DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE="drones-clean-old-tokens.timer"
# Drones for Great Wyrm
DRONES_GREAT_WYRM_VOTES_SERVICE_FILE="drones-great-wyrm-votes.service"
DRONES_GREAT_WYRM_VOTES_TIMER_FILE="drones-great-wyrm-votes.timer"
set -eu
echo
echo
echo -e "${PREFIX_INFO} Upgrading Python pip and setuptools"
"${PIP}" install --upgrade pip setuptools
echo
echo
echo "Updating Python dependencies"
"${PIP}" install --exists-action i -r "${APP_DIR}/requirements.txt"
echo
echo
echo -e "${PREFIX_INFO} Install checkenv"
HOME=/home/ubuntu /usr/local/go/bin/go install github.com/bugout-dev/checkenv@latest
echo
echo
echo -e "${PREFIX_INFO} Retrieving deployment parameters"
mkdir -p "${SECRETS_DIR}"
AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" /home/ubuntu/go/bin/checkenv show aws_ssm+drones:true > "${PARAMETERS_ENV_PATH}"
chmod 0640 "${PARAMETERS_ENV_PATH}"
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones service definition with ${DRONES_SERVICE_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_SERVICE_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_SERVICE_FILE}"
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones Statistics generation service and timer with: ${DRONES_STATISTICS_SERVICE_FILE}, ${DRONES_STATISTICS_TIMER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_STATISTICS_SERVICE_FILE}" "${SCRIPT_DIR}/${DRONES_STATISTICS_TIMER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_STATISTICS_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_STATISTICS_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_STATISTICS_TIMER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_STATISTICS_TIMER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_STATISTICS_TIMER_FILE}"
echo
echo
echo -e "${PREFIX_INFO} Replacing existing humbug report loader service definition with ${DRONES_HUMBUG_REPORT_LOADER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_HUMBUG_REPORT_LOADER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_HUMBUG_REPORT_LOADER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_HUMBUG_REPORT_LOADER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_HUMBUG_REPORT_LOADER_FILE}"
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones unlock rule service and timer with: ${DRONES_RULE_UNLOCK_SERVICE_FILE}, ${DRONES_RULE_UNLOCK_TIMER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_RULE_UNLOCK_SERVICE_FILE}" "${SCRIPT_DIR}/${DRONES_RULE_UNLOCK_TIMER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_UNLOCK_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_UNLOCK_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_UNLOCK_TIMER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_UNLOCK_TIMER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_RULE_UNLOCK_TIMER_FILE}"
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones clean large journals rule service and timer with: ${DRONES_RULE_CLEAN_LARGE_JOURNALS_SERVICE_FILE}, ${DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_LARGE_JOURNALS_SERVICE_FILE}" "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_LARGE_JOURNALS_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_CLEAN_LARGE_JOURNALS_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_RULE_CLEAN_LARGE_JOURNALS_TIMER_FILE}"
# Tokens
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones clean old tokens rule service and timer with: ${DRONES_RULE_CLEAN_OLD_TOKENS_SERVICE_FILE}, ${DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_OLD_TOKENS_SERVICE_FILE}" "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_OLD_TOKENS_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_CLEAN_OLD_TOKENS_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_RULE_CLEAN_OLD_TOKENS_TIMER_FILE}"
# Great Wyrm
echo
echo
echo -e "${PREFIX_INFO} Replacing existing Drones Great Wyrm votes stats generation service and timer with: ${DRONES_GREAT_WYRM_VOTES_SERVICE_FILE}, ${DRONES_GREAT_WYRM_VOTES_TIMER_FILE}"
chmod 644 "${SCRIPT_DIR}/${DRONES_GREAT_WYRM_VOTES_SERVICE_FILE}" "${SCRIPT_DIR}/${DRONES_GREAT_WYRM_VOTES_TIMER_FILE}"
cp "${SCRIPT_DIR}/${DRONES_GREAT_WYRM_VOTES_SERVICE_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_GREAT_WYRM_VOTES_SERVICE_FILE}"
cp "${SCRIPT_DIR}/${DRONES_GREAT_WYRM_VOTES_TIMER_FILE}" "/home/ubuntu/.config/systemd/user/${DRONES_GREAT_WYRM_VOTES_TIMER_FILE}"
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user daemon-reload
XDG_RUNTIME_DIR="/run/user/1000" systemctl --user restart --no-block "${DRONES_GREAT_WYRM_VOTES_TIMER_FILE}"