108 lines
2.7 KiB
Bash
108 lines
2.7 KiB
Bash
set -e
|
|
|
|
base="shared/1-data-1-empty"
|
|
|
|
ipNet="10.6.9.0/24"
|
|
|
|
primus_base="$base/primus"
|
|
primus_ip="10.6.9.1"
|
|
|
|
secondus_base="$base/secondus"
|
|
|
|
function as_primus {
|
|
current_ip="$primus_ip"
|
|
eval "$($SHELL "$UTILS/shared-daemon-env.sh" "$primus_base")"
|
|
}
|
|
|
|
function as_secondus {
|
|
current_ip="$secondus_ip"
|
|
eval "$($SHELL "$UTILS/shared-daemon-env.sh" "$secondus_base")"
|
|
}
|
|
|
|
# Even if it's already intialized, we want to put the caller in primus'
|
|
# environment
|
|
as_primus
|
|
|
|
secondus_bootstrap="$(pwd)/secondus-bootstrap.json"
|
|
|
|
if [ ! -d "$XDG_RUNTIME_DIR/isle" ]; then
|
|
echo "Initializing shared single node network"
|
|
|
|
mkdir a
|
|
mkdir b
|
|
mkdir c
|
|
|
|
cat >daemon.yml <<EOF
|
|
networks:
|
|
testing:
|
|
vpn:
|
|
public_addr: 127.0.0.1:60000
|
|
tun:
|
|
device: isle-primus
|
|
storage:
|
|
allocations:
|
|
- data_path: a/data
|
|
meta_path: a/meta
|
|
capacity: 1
|
|
- data_path: b/data
|
|
meta_path: b/meta
|
|
capacity: 1
|
|
- data_path: c/data
|
|
meta_path: c/meta
|
|
capacity: 1
|
|
EOF
|
|
|
|
isle daemon -l debug --config-path daemon.yml >daemon.log 2>&1 &
|
|
pid="$!"
|
|
$SHELL "$UTILS/register-cleanup.sh" "$pid" "1-data-1-empty-node-network/primus"
|
|
|
|
echo "Waiting for primus daemon (process $pid) to start"
|
|
while ! [ -e "$ISLE_DAEMON_HTTP_SOCKET_PATH" ]; do sleep 1; done
|
|
|
|
echo "Creating 1-data-1-empty network"
|
|
isle network create \
|
|
--domain shared.test \
|
|
--hostname primus \
|
|
--ip-net "$ipNet" \
|
|
--name "testing"
|
|
|
|
echo "Creating secondus bootstrap"
|
|
isle hosts create \
|
|
--hostname secondus \
|
|
> "$secondus_bootstrap"
|
|
|
|
(
|
|
as_secondus
|
|
|
|
cat >daemon.yml <<EOF
|
|
vpn:
|
|
tun:
|
|
device: isle-secondus
|
|
EOF
|
|
|
|
isle daemon -l debug -c daemon.yml >daemon.log 2>&1 &
|
|
pid="$!"
|
|
$SHELL "$UTILS/register-cleanup.sh" "$pid" "1-data-1-empty-node-network/secondus"
|
|
|
|
echo "Waiting for secondus daemon (process $!) to start"
|
|
while ! [ -e "$ISLE_DAEMON_HTTP_SOCKET_PATH" ]; do sleep 1; done
|
|
|
|
echo "Joining secondus to the network"
|
|
isle network join -b "$secondus_bootstrap"
|
|
)
|
|
fi
|
|
|
|
secondus_ip="$(
|
|
nebula-cert print -json \
|
|
-path <(jq -r '.Bootstrap.Hosts["secondus"].PublicCredentials.Cert' "$secondus_bootstrap") \
|
|
| jq -r '.details.ips[0]' \
|
|
| cut -d/ -f1
|
|
)"
|
|
|
|
NETWORK_ID="$(jq '.Bootstrap.NetworkCreationParams.ID' "$secondus_bootstrap")"
|
|
export NETWORK_ID
|
|
|
|
# shared-daemon-env.sh depends on NETWORK_ID, so we re-call as_primus in order
|
|
# to fully populate the envvars we need.
|
|
as_primus
|