#!/bin/bash set -e LOCAL_IP=${EXABGP_LOCAL_IP:-10.40.40.202} LOCAL_AS=${EXABGP_LOCAL_AS:-65100} PEER_AS=${EXABGP_PEER_AS:-65020} PEER_1=${EXABGP_PEER_1:-10.100.0.100} PEER_2=${EXABGP_PEER_2:-10.100.0.200} API_PORT=${EXABGP_API_PORT:-5050} echo "================================================================" echo " ExaBGP Route Injector" echo " Local: ${LOCAL_IP} AS${LOCAL_AS}" echo " Peers: ${PEER_1}, ${PEER_2} (AS${PEER_AS})" echo " API: http://0.0.0.0:${API_PORT}" echo "================================================================" # Generate ExaBGP 5.x env file — ExaBGP looks here based on pip install prefix mkdir -p /usr/local/etc/exabgp exabgp env > /usr/local/etc/exabgp/exabgp.env sed -i 's/drop = true/drop = false/' /usr/local/etc/exabgp/exabgp.env sed -i 's/cli = true/cli = false/' /usr/local/etc/exabgp/exabgp.env sed -i "s/destination = 'stdout'/destination = 'stderr'/" /usr/local/etc/exabgp/exabgp.env # Generate exabgp.conf from environment cat > /tmp/exabgp.conf << EOF process api { run /usr/local/bin/python3 /exabgp/api/server.py; encoder text; } neighbor ${PEER_1} { router-id ${LOCAL_IP}; local-address ${LOCAL_IP}; local-as ${LOCAL_AS}; peer-as ${PEER_AS}; description "CML-R9K-CORE-01"; hold-time 90; family { ipv4 unicast; } api { processes [ api ]; } } neighbor ${PEER_2} { router-id ${LOCAL_IP}; local-address ${LOCAL_IP}; local-as ${LOCAL_AS}; peer-as ${PEER_AS}; description "CML-R9K-CORE-02"; hold-time 90; family { ipv4 unicast; } api { processes [ api ]; } } EOF exec exabgp server /tmp/exabgp.conf