#!/bin/sh # Fallback polling: pull → verify → apply signed bundle (profile fallback). set -eu INTERVAL="${EVOBGP_SYNC_INTERVAL_SEC:-300}" BASE="${EVOBGP_CONTROL_PLANE_URL:?EVOBGP_CONTROL_PLANE_URL required}" TOKEN="${EVOBGP_NODE_TOKEN:?EVOBGP_NODE_TOKEN required}" SPEAKER="${EVOBGP_SPEAKER_ID:?EVOBGP_SPEAKER_ID required}" PUB="${EVOBGP_BUNDLE_PUBKEY_BASE64:?EVOBGP_BUNDLE_PUBKEY_BASE64 required}" EXTRACT="/etc/bird" BUNDLE="/tmp/evobgp-bundle.tar.gz" SOCKET="${EVOBGP_BIRDC_SOCKET:-/run/bird/bird.ctl}" sync_once() { evobgp-node pull-bundle \ -base-url "$BASE" \ -token "$TOKEN" \ -speaker-id "$SPEAKER" \ -o "$BUNDLE" || return 1 evobgp-node apply-bundle \ -f "$BUNDLE" \ -extract-dir "$EXTRACT" \ -pubkey-base64 "$PUB" \ -socket "$SOCKET" } echo "sync-bundle: polling every ${INTERVAL}s speaker=${SPEAKER}" while true; do if sync_once; then echo "sync-bundle: ok $(date -u +%Y-%m-%dT%H:%M:%SZ)" else echo "sync-bundle: failed $(date -u +%Y-%m-%dT%H:%M:%SZ)" >&2 fi sleep "$INTERVAL" done