-
Notifications
You must be signed in to change notification settings - Fork 2
/
setup
executable file
·98 lines (77 loc) · 3.28 KB
/
setup
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
#!/usr/bin/env bash
set -e
set -x
function help() {
cat << EOF
usage: $0 [OPTIONS]
Setup tools.
OPTIONS:
help Show this message
init Download and setup dependencies
render_config Render the config_template folder
flash_sd Flash the sd card
flash_sd_wifi Flash the sd card with wifi support
backup Import the config from the remote system
export_config Renders and exports the config to the target system
EOF
exit 1
}
CONFIG_TEMPLATE_PATH=$(pwd)/config_template
CONFIG_PATH=${TMP_PATH}/config
VAR_FILE_PATH=$(pwd)/.env
function init() {
rm -rf ${TMP_PATH}
mkdir ${TMP_PATH}
mkdir -p backup
docker pull ${DOCKER_IMAGE_CONFIGURER}
wget -O ${TMP_PATH}/flash ${FLASH_SCRIPT}
chmod +x ${TMP_PATH}/flash
wget -O ${TMP_PATH}/hypriotos.zip ${HYPRIOTOS_IMAGE}
unzip ${TMP_PATH}/hypriotos.zip -d ${TMP_PATH}
mv ${TMP_PATH}/hypriotos-*.img ${TMP_PATH}/hypriotos.img
touch ${TMP_PATH}/acme.json
chmod 600 ${TMP_PATH}/acme.json
touch ${TMP_PATH}/home-assistant.log
# mkdir -p ${TMP_PATH}/config/pihole/data
# mkdir -p ${TMP_PATH}/config/pihole/dnsmasq
# mkdir -p ${TMP_PATH/config}/pihole/log
touch ${TMP_PATH}/pihole.log
render_config
}
function render_config() {
docker run --rm --volume $CONFIG_TEMPLATE_PATH:/source:ro --volume $CONFIG_PATH:/output --volume $VAR_FILE_PATH:/vars/var_file:ro iago1460/configurer "$@"
}
function flash_sd() {
${TMP_PATH}/flash --bootconf ${CONFIG_PATH}/hypriot/bootconf.txt --userdata ${CONFIG_PATH}/hypriot/cloud_init.yml ${TMP_PATH}/hypriotos.img
}
function flash_sd_wifi() {
${TMP_PATH}/flash --bootconf ${CONFIG_PATH}/hypriot/bootconf.txt --userdata ${CONFIG_PATH}/hypriot/cloud_init_wifi.yml --config ${CONFIG_PATH}/hypriot/device_init.yml ${TMP_PATH}/hypriotos.img
}
function backup() {
rsync -r -a -v --delete -e ssh --rsync-path="sudo rsync" ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/config/ ./backup/${HOST_IP}-$(date '+%Y-%m-%d')/
echo "Data imported"
}
function export_config() {
render_config
rsync -a --no-o --no-g -v -z -e ssh ./docker-compose.yml ./.env ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/
rsync -a --no-o --no-g -r -v -e ssh ${CONFIG_PATH}/ ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/config/
# copy acme.json if it's not present
rsync --ignore-existing -a --no-o --no-g -v -z -e ssh ${TMP_PATH}/acme.json ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/config/traefik/
# copy home-assistant.log if it's not present
rsync --ignore-existing -a --no-o --no-g -v -z -e ssh ${TMP_PATH}/home-assistant.log ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/config/homeassistant/
# copy .bash_profile if it's not present
rsync --ignore-existing -a --no-o --no-g -v -z -e ssh ${TMP_PATH}/config/hypriot/.bash_profile ${USERNAME}@${HOST_IP}:/home/${USERNAME}/
# copy .pihole.log if it's not present
rsync --ignore-existing -a --no-o --no-g -v -z -e ssh ${TMP_PATH}/pihole.log ${USERNAME}@${HOST_IP}:/home/${USERNAME}/workspace/config/pihole/log/
echo "Config exported"
}
# Run user entered command at app level, or fallback to docker-compose
if [ "$(type -t $1)" == 'function' ]; then
func=$1
shift
$func "$@"
else
echo "Unknown command"
help
fi
exit $?