Single-site bay-stuck issue at WJ: GE Intune Report IP script filters
Get-NetIPAddress on StartsWith("10.") and posts everything matching
to the GE Tines webhook. Bays at WJ get the PXE LAN 10.9.100.x IP
captured and reported -> GE backend tags bays as on a non-corp 10.x
subnet -> dynamic group eligibility for SFLD policy never matches.
Other GE sites work because their PXE LANs aren't on 10.x at all.
Renumber PXE LAN to RFC1918 172.16.9.0/24 so the GE filter naturally
skips wired PXE addresses without any disable-NIC dance.
Server-side already in flight (netplan dual-bound, dnsmasq scope +
boot URL repointed, blancco preferences + grub.cfg + iPXE GetPxeScript
all sed'd to 172.16.9.1). This commit is the playbook / scripts /
docs side: 109 hits across 35 files sed'd in one shot.
After this lands + boot.wim is rebuilt + bays renumber off DHCP,
the 10.9.100.1 binding will be dropped from netplan as the final
cleanup step.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
51 lines
1.7 KiB
Bash
Executable File
51 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# deploy-bios.sh - Deploy BIOS update files to a running PXE server
|
|
# Copies Flash64W.exe, BIOS binaries, models.txt, and check-bios.cmd
|
|
#
|
|
# Usage: ./deploy-bios.sh [server-ip]
|
|
# Default server: 172.16.9.1
|
|
|
|
set -e
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")"/.. && pwd)"
|
|
PXE_SERVER="${1:-172.16.9.1}"
|
|
PXE_USER="pxe"
|
|
PXE_PASS="pxe"
|
|
REMOTE_DIR="/srv/samba/enrollment/BIOS"
|
|
BIOS_DIR="$REPO_ROOT/bios-staging"
|
|
MANIFEST="$REPO_ROOT/playbook/shopfloor-setup/BIOS/models.txt"
|
|
CHECK_SCRIPT="$REPO_ROOT/playbook/shopfloor-setup/BIOS/check-bios.cmd"
|
|
|
|
SSH="sshpass -p $PXE_PASS ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 $PXE_USER@$PXE_SERVER"
|
|
SCP="sshpass -p $PXE_PASS scp -o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
|
|
|
# Verify sources exist
|
|
if [ ! -d "$BIOS_DIR" ] || [ -z "$(ls -A "$BIOS_DIR" 2>/dev/null)" ]; then
|
|
echo "ERROR: bios-staging/ is empty or missing. Run ./pull-bios.sh first."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$MANIFEST" ]; then
|
|
echo "ERROR: playbook/shopfloor-setup/BIOS/models.txt not found."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deploying BIOS files to $PXE_SERVER..."
|
|
|
|
# Create remote directory
|
|
$SSH "sudo mkdir -p '$REMOTE_DIR' && sudo chown $PXE_USER:$PXE_USER '$REMOTE_DIR'"
|
|
|
|
# Copy check-bios.cmd and models.txt
|
|
echo " Copying check-bios.cmd + models.txt..."
|
|
$SCP "$CHECK_SCRIPT" "$MANIFEST" "$PXE_USER@$PXE_SERVER:$REMOTE_DIR/"
|
|
|
|
# Copy BIOS binaries
|
|
COUNT=$(find "$BIOS_DIR" -name '*.exe' | wc -l)
|
|
SIZE=$(du -sh "$BIOS_DIR" | cut -f1)
|
|
echo " Copying $COUNT BIOS binaries ($SIZE)..."
|
|
$SCP "$BIOS_DIR"/*.exe "$PXE_USER@$PXE_SERVER:$REMOTE_DIR/"
|
|
|
|
# Verify
|
|
REMOTE_COUNT=$($SSH "find '$REMOTE_DIR' -name '*.exe' | wc -l")
|
|
echo "Done: $REMOTE_COUNT files on $PXE_SERVER:$REMOTE_DIR"
|