63 lines
2.0 KiB
Bash
63 lines
2.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Export the XRd control-plane Docker image for CML 2.9 import.
|
||
|
|
#
|
||
|
|
# Usage:
|
||
|
|
# ./cml/build-xrd-image.sh
|
||
|
|
#
|
||
|
|
# The XRd image already exists locally (ios-xr/xrd-control-plane:25.1.1).
|
||
|
|
# This script just exports it to a .tar file for CML upload.
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
IMAGE="ios-xr/xrd-control-plane:25.1.1"
|
||
|
|
OUTPUT="/tmp/xrd-control-plane.tar"
|
||
|
|
|
||
|
|
echo "=== Verifying XRd image exists ==="
|
||
|
|
if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then
|
||
|
|
echo "ERROR: Image $IMAGE not found locally."
|
||
|
|
echo "Check with: docker images | grep xrd"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo " Image: $IMAGE"
|
||
|
|
SIZE=$(docker image inspect "$IMAGE" --format='{{.Size}}' | numfmt --to=iec 2>/dev/null || echo "unknown")
|
||
|
|
echo " Size: $SIZE"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Exporting image to $OUTPUT ==="
|
||
|
|
echo " (This may take a minute for ~1.3GB image...)"
|
||
|
|
docker save -o "$OUTPUT" "$IMAGE"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Export complete ==="
|
||
|
|
TAR_SIZE=$(du -h "$OUTPUT" | cut -f1)
|
||
|
|
echo " File: $OUTPUT ($TAR_SIZE)"
|
||
|
|
|
||
|
|
SHA=$(sha256sum "$OUTPUT" | awk '{print $1}')
|
||
|
|
echo " SHA256: $SHA"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Next steps ==="
|
||
|
|
echo "1. Update cml/xrd-image-definition.yaml with:"
|
||
|
|
echo " sha256: $SHA"
|
||
|
|
echo ""
|
||
|
|
echo "2. Upload to CML:"
|
||
|
|
echo " a. Tools > Node and Image Definitions > Import"
|
||
|
|
echo " Upload: cml/xrd-node-definition.yaml"
|
||
|
|
echo " b. Tools > Node and Image Definitions > Import"
|
||
|
|
echo " Upload: cml/xrd-image-definition.yaml"
|
||
|
|
echo " c. Tools > Node and Image Definitions > Image Definitions > Manage Image Uploads"
|
||
|
|
echo " Upload: $OUTPUT"
|
||
|
|
echo " (For large files, consider SCP to CML server instead)"
|
||
|
|
echo ""
|
||
|
|
echo "3. In your CML lab topology:"
|
||
|
|
echo " a. Drag 'XRd Control-Plane (IOS-XR)' from the node palette"
|
||
|
|
echo " b. Draw links to CORE-01 (→Gi0/0/0/0) and CORE-02 (→Gi0/0/0/1)"
|
||
|
|
echo " c. Edit xrd-startup.cfg if needed (IPs, BMP target, etc.)"
|
||
|
|
echo " d. Start the node (allow ~3-5 min for XRd boot)"
|
||
|
|
echo ""
|
||
|
|
echo "4. After boot, verify via XRd console:"
|
||
|
|
echo " show isis adjacency"
|
||
|
|
echo " show bgp summary"
|
||
|
|
echo " show bmp server 1"
|