-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbcm
More file actions
executable file
·178 lines (142 loc) · 5.12 KB
/
Copy pathbcm
File metadata and controls
executable file
·178 lines (142 loc) · 5.12 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/bin/bash
# note the absense of -u allows you to use environment variables from the parent shell
set -Eeuox pipefail
cd "$(dirname "$0")"
# if this is 1, then we assume we are running BCM WITHOUT the front-end (e.g., dockerd on bare metal)
IS_FRONTEND=1
BCM_HELP_FLAG=0
REBUILD_IMAGES=0
# when 0, we assume we are targeting SSH connections to remote BCM_SSH_HOSTNAME instead of executing locally.
DEPLOY_LOCALHOST=0
# make snap commands available to the script.
PATH="$PATH:/snap/bin"
export PATH="$PATH"
for i in "$@"; do
case $i in
--help)
BCM_HELP_FLAG=1
;;
--backend-only)
IS_FRONTEND=0
;;
--rebuild)
REBUILD_IMAGES=1
;;
--localhost)
DEPLOY_LOCALHOST=1
;;
*)
# unknown option
;;
esac
done
# make sure LXD is installed before we even think of continuing
if [[ ! -f "$(command -v lxc)" ]]; then
echo "ERROR: LXD does not seem to be installed. Please run the BCM installer script."
exit
fi
if lxc info | grep -q "server_clustered: false"; then
echo "ERROR: The LXD server does not appear to be in the correct state. Please re-run the BCM installer."
exit
fi
source ./env
source "$HOME/.bashrc"
if [[ $BCM_HELP_FLAG == 1 ]]; then
cat ./commands/help.txt
exit
fi
BCM_DEBUG=${BCM_DEBUG:-0}
export BCM_DEBUG="$BCM_DEBUG"
export REBUILD_IMAGES="$REBUILD_IMAGES"
BCM_CACHE_DIR=${BCM_CACHE_DIR:-"$HOME/.local/bcm"}
if [[ -n $BCM_CACHE_DIR ]]; then
BCM_CACHE_DIR="$BCM_CACHE_DIR"
fi
export BCM_CACHE_DIR="$BCM_CACHE_DIR"
if [[ -z $ ]]; then
echo "ERROR: BCM_CACHE_DIR IS not defined. Please set your environment."
exit
fi
BCM_SSH_HOSTNAME=${BCM_SSH_HOSTNAME:-"$(hostname)"}
if [[ -n $BCM_SSH_HOSTNAME ]]; then
BCM_SSH_HOSTNAME="$BCM_SSH_HOSTNAME"
fi
export BCM_SSH_HOSTNAME="$BCM_SSH_HOSTNAME"
BCM_SSH_USERNAME=${BCM_SSH_USERNAME:-"$(whoami)"}
if [[ -n $BCM_SSH_USERNAME ]]; then
BCM_SSH_USERNAME="$BCM_SSH_USERNAME"
fi
export BCM_SSH_USERNAME="$BCM_SSH_USERNAME"
BCM_ACTIVE_CHAIN=${BCM_ACTIVE_CHAIN:-"testnet"}
if [[ -n $BCM_ACTIVE_CHAIN ]]; then
BCM_ACTIVE_CHAIN="$BCM_ACTIVE_CHAIN"
fi
export BCM_ACTIVE_CHAIN="$BCM_ACTIVE_CHAIN"
GNUPGHOME=${GNUPGHOME:-"$HOME/.gnupg"}
if [[ -n $GNUPGHOME ]]; then
GNUPGHOME="$GNUPGHOME"
fi
export GNUPGHOME="$GNUPGHOME"
BCM_DATACENTER=${BCM_DATACENTER:-"default"}
if [[ -n $BCM_DATACENTER ]]; then
BCM_DATACENTER="$BCM_DATACENTER"
fi
export BCM_DATACENTER="$BCM_DATACENTER"
export BCM_LXC_BASE_IMAGE="ubuntu/20.04"
export BCM_MAJOR_VERSION="0"
export BCM_MINOR_VERSION="0"
export BCM_PATCH_VERSION="1"
export BCM_VERSION_FLAG="beta"
export BCM_VERSION="v$BCM_MAJOR_VERSION.$BCM_MINOR_VERSION.$BCM_PATCH_VERSION-$BCM_VERSION_FLAG"
BCM_GIT_DIR="$(pwd)"
export BCM_GIT_DIR="$BCM_GIT_DIR"
export BCM_PROJECT_DIR="$BCM_GIT_DIR/project"
export BCM_LXD_OPS="$BCM_PROJECT_DIR/shared"
export BCM_COMMAND_DIR="$BCM_GIT_DIR/commands"
# todo; convert this to a temp encrypted ramdisk that exists for the duration of each bcm call.
BCM_HELP_FLAG=0
export BCM_PROJECT="bcm-$BCM_DATACENTER""_""$BCM_VERSION"
export BCM_HELP_FLAG="$BCM_HELP_FLAG"
export IS_FRONTEND="$IS_FRONTEND"
# switch to 'master' for formal versions.
export BCM_DEFAULT_GIT_BRANCH="dev"
mkdir -p "$SSHHOME"
export BCM_STACKS_DIR="$BCM_GIT_DIR/stacks"
export BASE_DOCKER_IMAGE="ubuntu:20.04"
export BCM_TMP_DIR="/tmp/bcm" && mkdir -p "$BCM_TMP_DIR"
export LXC_BCM_BASE_IMAGE_NAME="bcm-template"
BCM_MANAGER_HOST_NAME="bcm-manager-01"
BCM_KAFKA_HOST_NAME="bcm-kafka-01"
BCM_UNDERLAY_HOST_NAME="bcm-underlay-01"
BCM_BITCOIN_HOST_NAME="bcm-bitcoin-$BCM_ACTIVE_CHAIN-01"
export BCM_MANAGER_HOST_NAME="$BCM_MANAGER_HOST_NAME"
export BCM_KAFKA_HOST_NAME="$BCM_KAFKA_HOST_NAME"
export BCM_UNDERLAY_HOST_NAME="$BCM_UNDERLAY_HOST_NAME"
export BCM_BITCOIN_HOST_NAME="$BCM_BITCOIN_HOST_NAME"
export BCM_GITHUB_REPO_URL="https://github.com/BitcoinCacheMachine/BitcoinCacheMachine"
export BCM_REGISTRY_MIRROR_PORT="5000"
export BCM_PRIVATE_REGISTRY_PORT="5010"
export BCM_PRIVATE_REGISTRY="$BCM_MANAGER_HOST_NAME:$BCM_PRIVATE_REGISTRY_PORT"
export BCM_KNOWN_HOSTS_FILE="$SSHHOME/known_hosts"
export BCM_DOCKER_IMAGE_CACHE_FQDN="registry-1.docker.io"
export BCM_LXD_IMAGE_CACHE="images.linuxcontainers.org"
OLD_GNUPGHOME="$GNUPGHOME"
export GNUPGHOME="$GNUPGHOME/trezor"
DEFAULT_KEY_ID=
if [ -d "$GNUPGHOME" ]; then
DEFAULT_KEY_ID=$(gpg --no-permission-warning --list-keys --keyid-format LONG | grep nistp256 | grep pub | sed 's/^[^/]*:/:/')
DEFAULT_KEY_ID="${DEFAULT_KEY_ID#*/}"
DEFAULT_KEY_ID="$(echo "$DEFAULT_KEY_ID" | awk '{print $1}')"
fi
export DEFAULT_KEY_ID="$DEFAULT_KEY_ID"
export GNUPGHOME="$OLD_GNUPGHOME"
RUNNING_CONTAINERS="$(lxc list --format csv --columns ns | grep "RUNNING")" || true
CLUSTER_ENDPOINTS="$(lxc cluster list --format csv | grep "$BCM_SSH_HOSTNAME" | awk -F"," '{print $1}')"
CLUSTER_NODE_COUNT=$(echo "$CLUSTER_ENDPOINTS" | wc -l)
export RUNNING_CONTAINERS="$RUNNING_CONTAINERS"
export CLUSTER_NODE_COUNT="$CLUSTER_NODE_COUNT"
export CLUSTER_ENDPOINTS="$CLUSTER_ENDPOINTS"
# Install docker if we're running this command on a front-end
./commands/cli_entrypoint.sh "$@"
#TODO
#DEPLOY_LOCALHOST