85 lines
3 KiB
Bash
Executable file
85 lines
3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Start HTTP control plane on NS1. Archive workers stay with verae-keep.
|
|
set -euo pipefail
|
|
STACK="${VERAE_STACK:-$HOME/verae-stack}"
|
|
FLEET="$STACK/packages/verae-fleet"
|
|
EDGE_PORT="${EDGE_PORT:-13000}"
|
|
export STAFF_IAM_URL="${STAFF_IAM_URL:-https://iam.zapier.georgelambert.org}"
|
|
export STAFF_COOKIE_DOMAIN="${STAFF_COOKIE_DOMAIN:-.zapier.georgelambert.org}"
|
|
export NATS_URL="${NATS_URL:-nats://127.0.0.1:4222}"
|
|
export FLEET_ENABLE_LAN134="${FLEET_ENABLE_LAN134:-}"
|
|
test -d "$FLEET" || { echo "missing $FLEET" >&2; exit 1; }
|
|
|
|
python3 - "$FLEET" "$EDGE_PORT" <<'PY'
|
|
import json, sys
|
|
from pathlib import Path
|
|
root = Path(sys.argv[1])
|
|
edge_port = sys.argv[2]
|
|
fleet_path = root / "fleet.json"
|
|
fleet = json.loads(fleet_path.read_text())
|
|
for sid in ("tree-node", "archive-worm", "archive-aggregator", "job-poller", "webhook-deliver", "nats"):
|
|
if sid in fleet.get("services", {}):
|
|
fleet["services"][sid]["enabled"] = False
|
|
fleet["services"][sid]["keepFloor"] = False
|
|
fleet_path.write_text(json.dumps(fleet, indent=2) + "\n")
|
|
machines_path = root / "machines.json"
|
|
machines = json.loads(machines_path.read_text())
|
|
for m in machines.get("machines", []):
|
|
if m.get("id") == "ns1":
|
|
m["enabled"] = False
|
|
if m.get("id") == "lan-134":
|
|
m["enabled"] = False
|
|
if m.get("id") == "local":
|
|
m["enabled"] = True
|
|
m["roles"] = ["*"]
|
|
m["capacity"] = 32
|
|
machines_path.write_text(json.dumps(machines, indent=2) + "\n")
|
|
edge = json.loads((root / "services" / "zappier-edge.json").read_text())
|
|
edge.setdefault("env", {})["PORT"] = edge_port
|
|
edge["env"]["BIND"] = "127.0.0.1"
|
|
edge["ports"] = {"healthBase": int(edge_port)}
|
|
(root / "services" / "zappier-edge.json").write_text(json.dumps(edge, indent=2) + "\n")
|
|
admin = f"http://127.0.0.1:{edge_port}"
|
|
for name in (
|
|
"customer-service",
|
|
"sales-pricing",
|
|
"accounting-export",
|
|
"access-staff",
|
|
"access-web",
|
|
"staff-iam",
|
|
"staff-session",
|
|
"zappier-edge",
|
|
):
|
|
p = root / "services" / f"{name}.json"
|
|
if not p.exists():
|
|
continue
|
|
spec = json.loads(p.read_text())
|
|
env = spec.setdefault("env", {})
|
|
if "ZAPPIER_ADMIN_URL" in env:
|
|
env["ZAPPIER_ADMIN_URL"] = admin
|
|
if name == "access-web":
|
|
env["ZAPPIER_EDGE_URL"] = admin
|
|
env["STAFF_IAM_URL"] = "https://iam.zapier.georgelambert.org"
|
|
env["STAFF_COOKIE_DOMAIN"] = ".zapier.georgelambert.org"
|
|
env["STAFF_AUTH"] = "1"
|
|
p.write_text(json.dumps(spec, indent=2) + "\n")
|
|
print("overlay applied edge", edge_port)
|
|
PY
|
|
|
|
cd "$FLEET"
|
|
if curl -sf http://127.0.0.1:3850/health >/dev/null; then
|
|
echo "fleet already up"
|
|
exit 0
|
|
fi
|
|
nohup env STAFF_IAM_URL="$STAFF_IAM_URL" STAFF_COOKIE_DOMAIN="$STAFF_COOKIE_DOMAIN" NATS_URL="$NATS_URL" node src/cli.js serve \
|
|
>/tmp/verae-fleet-serve.out 2>&1 &
|
|
echo "fleet pid $!"
|
|
for i in $(seq 1 40); do
|
|
if curl -sf http://127.0.0.1:3850/health >/dev/null; then
|
|
echo "fleet up"
|
|
exit 0
|
|
fi
|
|
sleep 0.5
|
|
done
|
|
echo "fleet did not become healthy; see /tmp/verae-fleet-serve.out" >&2
|
|
exit 1
|