diff --git a/bin/wild-dnsmasq-install b/bin/wild-dnsmasq-install index 53d416a..276cb7d 100755 --- a/bin/wild-dnsmasq-install +++ b/bin/wild-dnsmasq-install @@ -68,85 +68,92 @@ fi # Create setup bundle. -# Copy iPXE bootloader to ipxe-web from cached assets. -echo "Copying Talos PXE assets from cache..." -PXE_WEB_ROOT="${BUNDLE_DIR}/ipxe-web" -mkdir -p "${PXE_WEB_ROOT}/amd64" -cp "${DNSMASQ_SETUP_DIR}/boot.ipxe" "${PXE_WEB_ROOT}/boot.ipxe" +# The following was a completely fine process for making your dnsmasq server +# also serve PXE boot assets for the cluster. However, after using it for a bit, +# it seems to be more complexity for no additional benefit when the operators +# can just use USB keys. -# Get schematic ID from override or config -if [ -n "$SCHEMATIC_ID_OVERRIDE" ]; then - SCHEMATIC_ID="$SCHEMATIC_ID_OVERRIDE" - echo "Using schematic ID from command line: $SCHEMATIC_ID" -else - SCHEMATIC_ID=$(wild-config cluster.nodes.talos.schematicId) - if [ -z "$SCHEMATIC_ID" ] || [ "$SCHEMATIC_ID" = "null" ]; then - echo "Error: No schematic ID found in config" - echo "Please run 'wild-setup' first to configure your cluster" - echo "Or specify one with --schematic-id option" - exit 1 - fi - echo "Using schematic ID from config: $SCHEMATIC_ID" -fi +## Setup PXE boot assets -# Define cache directories using new structure -CACHE_DIR="${WC_HOME}/.wildcloud" -SCHEMATIC_CACHE_DIR="${CACHE_DIR}/node-boot-assets/${SCHEMATIC_ID}" -PXE_CACHE_DIR="${SCHEMATIC_CACHE_DIR}/pxe" -IPXE_CACHE_DIR="${SCHEMATIC_CACHE_DIR}/ipxe" +# # Copy iPXE bootloader to ipxe-web from cached assets. +# echo "Copying Talos PXE assets from cache..." +# PXE_WEB_ROOT="${BUNDLE_DIR}/ipxe-web" +# mkdir -p "${PXE_WEB_ROOT}/amd64" +# cp "${DNSMASQ_SETUP_DIR}/boot.ipxe" "${PXE_WEB_ROOT}/boot.ipxe" -# Check if cached assets exist -KERNEL_CACHE_PATH="${PXE_CACHE_DIR}/amd64/vmlinuz" -INITRAMFS_CACHE_PATH="${PXE_CACHE_DIR}/amd64/initramfs.xz" +# # Get schematic ID from override or config +# if [ -n "$SCHEMATIC_ID_OVERRIDE" ]; then +# SCHEMATIC_ID="$SCHEMATIC_ID_OVERRIDE" +# echo "Using schematic ID from command line: $SCHEMATIC_ID" +# else +# SCHEMATIC_ID=$(wild-config cluster.nodes.talos.schematicId) +# if [ -z "$SCHEMATIC_ID" ] || [ "$SCHEMATIC_ID" = "null" ]; then +# echo "Error: No schematic ID found in config" +# echo "Please run 'wild-setup' first to configure your cluster" +# echo "Or specify one with --schematic-id option" +# exit 1 +# fi +# echo "Using schematic ID from config: $SCHEMATIC_ID" +# fi -if [ ! -f "${KERNEL_CACHE_PATH}" ] || [ ! -f "${INITRAMFS_CACHE_PATH}" ]; then - echo "Error: Talos PXE assets not found in cache for schematic ID: ${SCHEMATIC_ID}" - echo "Expected locations:" - echo " Kernel: ${KERNEL_CACHE_PATH}" - echo " Initramfs: ${INITRAMFS_CACHE_PATH}" - echo "" - echo "Please run 'wild-cluster-node-boot-assets-download' first to download and cache the assets." - exit 1 -fi +# # Define cache directories using new structure +# CACHE_DIR="${WC_HOME}/.wildcloud" +# SCHEMATIC_CACHE_DIR="${CACHE_DIR}/node-boot-assets/${SCHEMATIC_ID}" +# PXE_CACHE_DIR="${SCHEMATIC_CACHE_DIR}/pxe" +# IPXE_CACHE_DIR="${SCHEMATIC_CACHE_DIR}/ipxe" -# Copy Talos PXE assets from cache -echo "Copying Talos kernel from cache..." -cp "${KERNEL_CACHE_PATH}" "${PXE_WEB_ROOT}/amd64/vmlinuz" -echo "✅ Talos kernel copied from cache" +# # Check if cached assets exist +# KERNEL_CACHE_PATH="${PXE_CACHE_DIR}/amd64/vmlinuz" +# INITRAMFS_CACHE_PATH="${PXE_CACHE_DIR}/amd64/initramfs.xz" -echo "Copying Talos initramfs from cache..." -cp "${INITRAMFS_CACHE_PATH}" "${PXE_WEB_ROOT}/amd64/initramfs.xz" -echo "✅ Talos initramfs copied from cache" +# if [ ! -f "${KERNEL_CACHE_PATH}" ] || [ ! -f "${INITRAMFS_CACHE_PATH}" ]; then +# echo "Error: Talos PXE assets not found in cache for schematic ID: ${SCHEMATIC_ID}" +# echo "Expected locations:" +# echo " Kernel: ${KERNEL_CACHE_PATH}" +# echo " Initramfs: ${INITRAMFS_CACHE_PATH}" +# echo "" +# echo "Please run 'wild-cluster-node-boot-assets-download' first to download and cache the assets." +# exit 1 +# fi -# Copy iPXE bootloader files from cache -echo "Copying iPXE bootloader files from cache..." -FTPD_DIR="${BUNDLE_DIR}/pxe-ftpd" -mkdir -p "${FTPD_DIR}" +# # Copy Talos PXE assets from cache +# echo "Copying Talos kernel from cache..." +# cp "${KERNEL_CACHE_PATH}" "${PXE_WEB_ROOT}/amd64/vmlinuz" +# echo "✅ Talos kernel copied from cache" -# Check if iPXE assets exist in cache -IPXE_EFI_CACHE="${IPXE_CACHE_DIR}/ipxe.efi" -IPXE_BIOS_CACHE="${IPXE_CACHE_DIR}/undionly.kpxe" -IPXE_ARM64_CACHE="${IPXE_CACHE_DIR}/ipxe-arm64.efi" +# echo "Copying Talos initramfs from cache..." +# cp "${INITRAMFS_CACHE_PATH}" "${PXE_WEB_ROOT}/amd64/initramfs.xz" +# echo "✅ Talos initramfs copied from cache" -if [ ! -f "${IPXE_EFI_CACHE}" ] || [ ! -f "${IPXE_BIOS_CACHE}" ] || [ ! -f "${IPXE_ARM64_CACHE}" ]; then - echo "Error: iPXE bootloader assets not found in cache for schematic ID: ${SCHEMATIC_ID}" - echo "Expected locations:" - echo " iPXE EFI: ${IPXE_EFI_CACHE}" - echo " iPXE BIOS: ${IPXE_BIOS_CACHE}" - echo " iPXE ARM64: ${IPXE_ARM64_CACHE}" - echo "" - echo "Please run 'wild-cluster-node-boot-assets-download' first to download and cache the assets." - exit 1 -fi +# # Copy iPXE bootloader files from cache +# echo "Copying iPXE bootloader files from cache..." +# FTPD_DIR="${BUNDLE_DIR}/pxe-ftpd" +# mkdir -p "${FTPD_DIR}" -# Copy iPXE assets from cache -cp "${IPXE_EFI_CACHE}" "${FTPD_DIR}/ipxe.efi" -cp "${IPXE_BIOS_CACHE}" "${FTPD_DIR}/undionly.kpxe" -cp "${IPXE_ARM64_CACHE}" "${FTPD_DIR}/ipxe-arm64.efi" -echo "✅ iPXE bootloader files copied from cache" +# # Check if iPXE assets exist in cache +# IPXE_EFI_CACHE="${IPXE_CACHE_DIR}/ipxe.efi" +# IPXE_BIOS_CACHE="${IPXE_CACHE_DIR}/undionly.kpxe" +# IPXE_ARM64_CACHE="${IPXE_CACHE_DIR}/ipxe-arm64.efi" + +# if [ ! -f "${IPXE_EFI_CACHE}" ] || [ ! -f "${IPXE_BIOS_CACHE}" ] || [ ! -f "${IPXE_ARM64_CACHE}" ]; then +# echo "Error: iPXE bootloader assets not found in cache for schematic ID: ${SCHEMATIC_ID}" +# echo "Expected locations:" +# echo " iPXE EFI: ${IPXE_EFI_CACHE}" +# echo " iPXE BIOS: ${IPXE_BIOS_CACHE}" +# echo " iPXE ARM64: ${IPXE_ARM64_CACHE}" +# echo "" +# echo "Please run 'wild-cluster-node-boot-assets-download' first to download and cache the assets." +# exit 1 +# fi + +# # Copy iPXE assets from cache +# cp "${IPXE_EFI_CACHE}" "${FTPD_DIR}/ipxe.efi" +# cp "${IPXE_BIOS_CACHE}" "${FTPD_DIR}/undionly.kpxe" +# cp "${IPXE_ARM64_CACHE}" "${FTPD_DIR}/ipxe-arm64.efi" +# echo "✅ iPXE bootloader files copied from cache" -cp "${DNSMASQ_SETUP_DIR}/nginx.conf" "${BUNDLE_DIR}/nginx.conf" +# cp "${DNSMASQ_SETUP_DIR}/nginx.conf" "${BUNDLE_DIR}/nginx.conf" cp "${DNSMASQ_SETUP_DIR}/dnsmasq.conf" "${BUNDLE_DIR}/dnsmasq.conf" cp "${DNSMASQ_SETUP_DIR}/setup.sh" "${BUNDLE_DIR}/setup.sh" diff --git a/setup/dnsmasq/dnsmasq.conf b/setup/dnsmasq/dnsmasq.conf index 9c81cb5..97481ed 100644 --- a/setup/dnsmasq/dnsmasq.conf +++ b/setup/dnsmasq/dnsmasq.conf @@ -16,24 +16,23 @@ server=1.1.1.1 server=8.8.8.8 # --- DHCP Settings --- -dhcp-range={{ .cloud.dhcpRange }},12h -dhcp-option=3,{{ .cloud.router.ip }} # gateway to assign -dhcp-option=6,{{ .cloud.dns.ip }} # dns to assign +# dhcp-range={{ .cloud.dhcpRange }},12h +# dhcp-option=3,{{ .cloud.router.ip }} # gateway to assign +# dhcp-option=6,{{ .cloud.dns.ip }} # dns to assign # --- PXE Booting --- -enable-tftp -tftp-root=/var/ftpd +# enable-tftp +# tftp-root=/var/ftpd -dhcp-match=set:efi-x86_64,option:client-arch,7 -dhcp-boot=tag:efi-x86_64,ipxe.efi -dhcp-boot=tag:!efi-x86_64,undionly.kpxe +# dhcp-match=set:efi-x86_64,option:client-arch,7 +# dhcp-boot=tag:efi-x86_64,ipxe.efi +# dhcp-boot=tag:!efi-x86_64,undionly.kpxe -dhcp-match=set:efi-arm64,option:client-arch,11 -dhcp-boot=tag:efi-arm64,ipxe-arm64.efi +# dhcp-match=set:efi-arm64,option:client-arch,11 +# dhcp-boot=tag:efi-arm64,ipxe-arm64.efi -dhcp-userclass=set:ipxe,iPXE -dhcp-boot=tag:ipxe,http://{{ .cloud.dns.ip }}/boot.ipxe +# dhcp-userclass=set:ipxe,iPXE +# dhcp-boot=tag:ipxe,http://{{ .cloud.dns.ip }}/boot.ipxe log-queries -log-dhcp - +# log-dhcp diff --git a/setup/dnsmasq/setup.sh b/setup/dnsmasq/setup.sh index b84e8c4..6d00cf2 100755 --- a/setup/dnsmasq/setup.sh +++ b/setup/dnsmasq/setup.sh @@ -9,43 +9,43 @@ echo "Installing dnsmasq and nginx." sudo apt install -y dnsmasq nginx DNSMASQ_SETUP_DIR="." -PXE_FTPD_DIR="${DNSMASQ_SETUP_DIR}/pxe-ftpd" -PXE_WEB_ROOT="${DNSMASQ_SETUP_DIR}/ipxe-web" +# PXE_FTPD_DIR="${DNSMASQ_SETUP_DIR}/pxe-ftpd" +# PXE_WEB_ROOT="${DNSMASQ_SETUP_DIR}/ipxe-web" # Configure nginx. -echo "Configuring nginx." -sudo cp "${DNSMASQ_SETUP_DIR}/nginx.conf" /etc/nginx/sites-available/talos -sudo chown www-data:www-data /etc/nginx/sites-available/talos -sudo chmod -R 755 /etc/nginx/sites-available/talos +# echo "Configuring nginx." +# sudo cp "${DNSMASQ_SETUP_DIR}/nginx.conf" /etc/nginx/sites-available/talos +# sudo chown www-data:www-data /etc/nginx/sites-available/talos +# sudo chmod -R 755 /etc/nginx/sites-available/talos # Copy assets to nginx web root -echo "Copying Talos PXE boot assets to nginx web root." -TALOS_PXE_WEB_ROOT="/var/www/html/talos" -sudo mkdir -p "${TALOS_PXE_WEB_ROOT}" -sudo rm -rf ${TALOS_PXE_WEB_ROOT}/* # Clean the web root directory -sudo cp -r ${PXE_WEB_ROOT}/* "${TALOS_PXE_WEB_ROOT}" -sudo chown -R www-data:www-data "${TALOS_PXE_WEB_ROOT}" -sudo chmod -R 755 "${TALOS_PXE_WEB_ROOT}" +# echo "Copying Talos PXE boot assets to nginx web root." +# TALOS_PXE_WEB_ROOT="/var/www/html/talos" +# sudo mkdir -p "${TALOS_PXE_WEB_ROOT}" +# sudo rm -rf ${TALOS_PXE_WEB_ROOT}/* # Clean the web root directory +# sudo cp -r ${PXE_WEB_ROOT}/* "${TALOS_PXE_WEB_ROOT}" +# sudo chown -R www-data:www-data "${TALOS_PXE_WEB_ROOT}" +# sudo chmod -R 755 "${TALOS_PXE_WEB_ROOT}" # Start nginx service to serve the iPXE script and images -echo "Starting nginx service." -sudo ln -s /etc/nginx/sites-available/talos /etc/nginx/sites-enabled/talos > /dev/null 2>&1 || true -sudo rm -f /etc/nginx/sites-enabled/default -sudo systemctl reload nginx +# echo "Starting nginx service." +# sudo ln -s /etc/nginx/sites-available/talos /etc/nginx/sites-enabled/talos > /dev/null 2>&1 || true +# sudo rm -f /etc/nginx/sites-enabled/default +# sudo systemctl reload nginx # Stop and disable systemd-resolved if it is running -if systemctl is-active --quiet systemd-resolved; then - echo "Stopping and disabling systemd-resolved..." - sudo systemctl disable systemd-resolved - sudo systemctl stop systemd-resolved - # sudo rm -f /etc/resolv.conf - echo "systemd-resolved stopped and disabled" -fi +# if systemctl is-active --quiet systemd-resolved; then +# echo "Stopping and disabling systemd-resolved..." +# sudo systemctl disable systemd-resolved +# sudo systemctl stop systemd-resolved +# # sudo rm -f /etc/resolv.conf +# echo "systemd-resolved stopped and disabled" +# fi # Update PXE's iPXE bootloader files. -echo "Updating iPXE ftpd bootloader files." -sudo mkdir -p /var/ftpd -sudo cp ${PXE_FTPD_DIR}/* /var/ftpd/ +# echo "Updating iPXE ftpd bootloader files." +# sudo mkdir -p /var/ftpd +# sudo cp ${PXE_FTPD_DIR}/* /var/ftpd/ # Finally, install and configure DNSMasq. echo "Configuring and starting DNSMasq."