#!/bin/bash # Build the ExaBGP Docker image and export it for CML 2.9 import. # # Usage: # ./cml/build-cml-image.sh # # Output: # /tmp/obmp-exabgp.tar — upload this to CML via: # Tools > Node and Image Definitions > Image Definitions > Manage Image Uploads # # After upload, also import the node + image definition YAMLs: # Tools > Node and Image Definitions > Import > cml/exabgp-node-definition.yaml # Tools > Node and Image Definitions > Import > cml/exabgp-image-definition.yaml set -e cd "$(dirname "$0")/.." echo "=== Building ExaBGP Docker image ===" docker build -t obmp-exabgp:latest ./exabgp/ echo "" echo "=== Exporting image to /tmp/obmp-exabgp.tar ===" docker save -o /tmp/obmp-exabgp.tar obmp-exabgp:latest echo "" echo "=== Image details ===" SIZE=$(du -h /tmp/obmp-exabgp.tar | cut -f1) echo " File: /tmp/obmp-exabgp.tar ($SIZE)" SHA=$(sha256sum /tmp/obmp-exabgp.tar | awk '{print $1}') echo " SHA256: $SHA" IMAGE_ID=$(docker image inspect obmp-exabgp:latest --format='{{.Id}}') echo " Image ID: $IMAGE_ID" echo "" echo "=== Next steps ===" echo "1. Update cml/exabgp-image-definition.yaml with:" echo " sha256: $SHA" echo "" echo "2. Upload to CML:" echo " a. Tools > Node and Image Definitions > Import" echo " Upload: cml/exabgp-node-definition.yaml" echo " b. Tools > Node and Image Definitions > Import" echo " Upload: cml/exabgp-image-definition.yaml" echo " c. Tools > Node and Image Definitions > Image Definitions > Manage Image Uploads" echo " Upload: /tmp/obmp-exabgp.tar" echo "" echo "3. In your CML lab topology:" echo " a. Drag 'ExaBGP Route Injector' from the node palette" echo " b. Draw links to CORE-01 and CORE-02" echo " c. Edit the boot.sh in the node config to set correct IPs" echo " d. Start the node"