2022-05-20 15:06:41 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -eux
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
|
2022-10-19 17:15:38 +00:00
|
|
|
# let's make sure we have an ssh keypair. We just use $SSH_HOME/id_rsa
|
2022-06-22 17:42:51 +00:00
|
|
|
# TODO convert this to SSH private key held on Trezor. THus trezor-T required for
|
|
|
|
# login operations. This should be configurable of course.
|
2022-05-20 15:06:41 +00:00
|
|
|
if [ ! -f "$SSH_HOME/id_rsa" ]; then
|
|
|
|
# generate a new SSH key for the base vm image.
|
|
|
|
ssh-keygen -f "$SSH_HOME/id_rsa" -t ecdsa -b 521 -N ""
|
|
|
|
fi
|
|
|
|
|
|
|
|
## This is a weird if clause since we need to LEFT-ALIGN the statement below.
|
|
|
|
SSH_STRING="Host ${FQDN}"
|
|
|
|
if ! grep -q "$SSH_STRING" "$SSH_HOME/config"; then
|
|
|
|
|
|
|
|
########## BEGIN
|
|
|
|
cat >> "$SSH_HOME/config" <<-EOF
|
|
|
|
|
|
|
|
${SSH_STRING}
|
|
|
|
HostName ${FQDN}
|
|
|
|
User ubuntu
|
|
|
|
EOF
|
|
|
|
###
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
2022-06-22 17:42:51 +00:00
|
|
|
function prepare_host {
|
|
|
|
# scan the remote machine and install it's identity in our SSH known_hosts file.
|
|
|
|
ssh-keyscan -H -t ecdsa "$FQDN" >> "$SSH_HOME/known_hosts"
|
|
|
|
|
|
|
|
# create a directory to store backup archives. This is on all new vms.
|
|
|
|
ssh "$FQDN" mkdir -p "$REMOTE_HOME/backups"
|
|
|
|
|
2022-08-24 14:11:50 +00:00
|
|
|
# if this execution is for btcpayserver, then we run the stub/btcpay setup script
|
|
|
|
# but only if it hasn't been executed before.
|
2022-07-27 16:38:33 +00:00
|
|
|
if [ "$VIRTUAL_MACHINE" = btcpayserver ]; then
|
2022-08-24 14:11:50 +00:00
|
|
|
if [ "$(ssh "$BTCPAY_FQDN" [[ ! -f "$REMOTE_HOME/btcpay.complete" ]]; echo $?)" -eq 0 ]; then
|
|
|
|
./btcpayserver/stub_btcpay_setup.sh
|
|
|
|
fi
|
2022-06-22 17:42:51 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-05-20 15:06:41 +00:00
|
|
|
# when set to true, this flag indicates that a new VPS was created during THIS script run.
|
|
|
|
if [ "$VPS_HOSTING_TARGET" = aws ]; then
|
|
|
|
# let's create the remote VPS if needed.
|
|
|
|
if ! docker-machine ls -q --filter name="$FQDN" | grep -q "$FQDN"; then
|
|
|
|
|
|
|
|
./provision_vps.sh
|
|
|
|
|
2022-06-22 17:42:51 +00:00
|
|
|
prepare_host
|
2022-05-20 15:06:41 +00:00
|
|
|
fi
|
|
|
|
elif [ "$VPS_HOSTING_TARGET" = lxd ]; then
|
|
|
|
ssh-keygen -f "$SSH_HOME/known_hosts" -R "$FQDN"
|
|
|
|
|
|
|
|
# if the machine doesn't exist, we create it.
|
|
|
|
if ! lxc list --format csv | grep -q "$LXD_VM_NAME"; then
|
|
|
|
|
|
|
|
# create a base image if needed and instantiate a VM.
|
|
|
|
if [ -z "$MAC_ADDRESS_TO_PROVISION" ]; then
|
2022-09-09 18:00:07 +00:00
|
|
|
echo "ERROR: You MUST define a MAC Address for all your machines by setting WWW_SERVER_MAC_ADDRESS, BTCPAYSERVER_MAC_ADDRESS in your site defintion."
|
2022-10-27 20:07:00 +00:00
|
|
|
echo "INFO: IMPORTANT! You MUST have DHCP Reservations for these MAC addresses. You also need records established the DNS."
|
2022-05-20 15:06:41 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
./provision_lxc.sh
|
|
|
|
fi
|
|
|
|
|
2022-06-22 17:42:51 +00:00
|
|
|
prepare_host
|
2022-05-20 15:06:41 +00:00
|
|
|
|
2022-05-24 18:19:26 +00:00
|
|
|
fi
|