Last active
February 2, 2022 08:47
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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