#!/usr/bin/env bash # Local syntax check always. Live cluster check when pct is present. set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" bash -n "$ROOT/scripts/lib-ct.sh" bash -n "$ROOT/scripts/create-cluster.sh" bash -n "$ROOT/scripts/status.sh" bash -n "$ROOT/scripts/bench.sh" bash -n "$ROOT/scripts/study-on-ns1.sh" grep -q 'host: {{IP}}' "$ROOT/conf/nats.conf.tmpl" grep -qv '0.0.0.0' "$ROOT/conf/nats.conf.tmpl" if [[ ! -d /etc/pve/nodes ]]; then echo "OK (syntax; not on Proxmox)" exit 0 fi # shellcheck disable=SC1091 . "$ROOT/cluster.env" export PATH="/usr/sbin:/usr/bin:/bin:$PATH" mapfile -t rows < <(printf '%s\n' "$NODES" | awk 'NF==3 {print}') ready=0 for row in "${rows[@]}"; do # shellcheck disable=SC2086 set -- $row vmid=$1 name=$2 ip=$3 js="$(sudo pct exec "$vmid" -- curl -fsS --max-time 3 http://127.0.0.1:8222/varz 2>/dev/null || true)" echo "$js" | grep -q '"jetstream"' && ready=$((ready + 1)) || echo "not ready $name" done [[ $ready -eq 3 ]] || { echo "cluster not fully up ($ready/3)" >&2; exit 1; } # nats CLI on first node first="$(echo "${rows[0]}" | awk '{print $1}')" sudo pct exec "$first" -- bash -lc ' set -e export DEBIAN_FRONTEND=noninteractive if [[ ! -x /usr/local/bin/nats ]]; then apt-get install -y --no-install-recommends unzip >/dev/null curl -fsSL https://github.com/nats-io/natscli/releases/download/v0.1.6/nats-0.1.6-linux-amd64.zip -o /tmp/natscli.zip rm -rf /tmp/natscli && mkdir -p /tmp/natscli unzip -o /tmp/natscli.zip -d /tmp/natscli >/dev/null BIN=$(find /tmp/natscli /tmp -maxdepth 3 -type f -name nats | head -1) test -n "$BIN" install -m 0755 "$BIN" /usr/local/bin/nats fi IP=$(hostname -I | awk "{print \$1}") export NATS_URL=nats://$IP:4222 export PATH=/usr/local/bin:/usr/bin:/bin nats stream rm VERAE_PX_TEST --force >/dev/null 2>&1 || true nats stream add VERAE_PX_TEST --subjects="verae.px.test" --replicas=3 --storage=file --retention=limits --discard=old --max-msgs=-1 --max-bytes=-1 --max-age=1h --dupe-window=2m --defaults nats pub verae.px.test cluster-ok nats stream info VERAE_PX_TEST ' echo "OK live cluster (3/3 + replicas=3 stream)"