Skip to content

Instantly share code, notes, and snippets.

@mpontillo
Last active February 2, 2022 08:47
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save mpontillo/6ee4c96d8aed4d0efde66a37aa6d5af9 to your computer and use it in GitHub Desktop.
Save mpontillo/6ee4c96d8aed4d0efde66a37aa6d5af9 to your computer and use it in GitHub Desktop.
Script to fetch the default TFTP configuration from MAAS and fetch the cloud-config URL.
#!/bin/bash -e
TMPDIR="$(mktemp -d)"
function cleanup() {
rm -rf "$TMPDIR"
}
trap cleanup EXIT
server=${1:-localhost}
PXE_CFG_URL="tftp://$server/pxelinux.cfg/default-amd64-generic"
curl -s "$PXE_CFG_URL" > "$TMPDIR/pxe-config"
echo ""
echo "===== BEGIN PXE CONFIG ====="
cat "$TMPDIR/pxe-config"
echo "===== END PXE CONFIG ====="
GRUB_CFG_URL="tftp://$server/grub/grub.cfg-default-amd64-generic"
curl -s "$GRUB_CFG_URL" > "$TMPDIR/grub-config"
echo ""
echo "===== BEGIN GRUB CONFIG ====="
cat "$TMPDIR/grub-config"
echo "===== END GRUB CONFIG ====="
CONFIG_URL=$(cat "$TMPDIR/pxe-config" \
| grep ' APPEND.*cloud-config-url' \
| tr ' ' '\n' \
| grep cloud-config-url \
| cut -f2- -d=)
echo ""
echo "Found cloud-config-url: $CONFIG_URL"
curl -s "$CONFIG_URL" > "$TMPDIR/enlist-config"
echo ""
echo "===== BEGIN ENLISTMENT CLOUD-CONFIG ====="
cat "$TMPDIR/enlist-config"
echo "===== END ENLISTMENT CLOUD-CONFIG ====="
METADATA_URL=$(cat "$TMPDIR/enlist-config" \
| grep 'metadata_url: ' \
| awk '{ print $2 }')
echo ""
echo "Found metadata URL: $METADATA_URL"
LOADERS="
tftp://$server/pxelinux.0
tftp://$server/chain.c32
tftp://$server/ifcpu64.c32
tftp://$server/ldlinux.c32
tftp://$server/libcom32.c32
tftp://$server/libutil.c32
tftp://$server/bootx64.efi
tftp://$server/grubx64.efi
tftp://$server/grubaa64.efi
tftp://$server/bootppc64.bin
"
set -o pipefail
echo ""
echo "===== BEGIN BOOT LOADER SHA256 SUMS ====="
for loader in $LOADERS; do
loader_sha256=$(curl -sqf "$loader" | sha256sum | awk '{ print $1 }' || touch $TMPDIR/not-found)
if [ -f $TMPDIR/not-found ]; then
loader_sha256="[WARNING: file not found]"
rm $TMPDIR/not-found
fi
printf "%40s\n%10s%s\n\n" "$loader" "" "$loader_sha256"
done
echo "===== END BOOT LOADER SHA256 SUMS ====="
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment