photoncloud-monorepo/baremetal/vm-cluster/pxe-server-setup.sh
centra 5c6eb04a46 T036: Add VM cluster deployment configs for nixos-anywhere
- netboot-base.nix with SSH key auth
- Launch scripts for node01/02/03
- Node configuration.nix and disko.nix
- Nix modules for first-boot automation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-11 09:59:19 +09:00

123 lines
2.9 KiB
Bash

#!/bin/sh
# PXE Server Automated Setup Script for Alpine Linux
# This script should be run inside the Alpine installer environment
# Usage: sh pxe-server-setup.sh
set -e
echo "=== PlasmaCloud PXE Server Setup ==="
echo "This script will:"
echo "1. Install Alpine Linux to disk"
echo "2. Configure static networking (192.168.100.1)"
echo "3. Install and configure dnsmasq (DHCP/DNS/TFTP)"
echo "4. Install openssh for remote access"
echo ""
# 1. Configure keyboard and hostname
setup-keymap us us
setup-hostname pxe-server
# 2. Configure network interfaces
cat > /tmp/interfaces <<'EOF'
auto lo
iface lo inet loopback
# Multicast network (cluster nodes)
auto eth0
iface eth0 inet static
address 192.168.100.1
netmask 255.255.255.0
# User network (internet access)
auto eth1
iface eth1 inet dhcp
EOF
cp /tmp/interfaces /etc/network/interfaces
rc-service networking restart
# 3. Configure DNS (use public DNS for outbound)
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
# 4. Setup APK repositories (use fastest mirror)
setup-apkrepos -f
# 5. Install system to disk
echo "Installing Alpine to disk /dev/vda..."
echo -e "y\n" | setup-disk -m sys /dev/vda
# 6. Mount the new root and configure it
mount /dev/vda3 /mnt
mount /dev/vda1 /mnt/boot
# 7. Install required packages in the new system
chroot /mnt apk add --no-cache \
dnsmasq \
openssh \
curl \
bash \
vim
# 8. Configure dnsmasq in the new system
cat > /mnt/etc/dnsmasq.conf <<'EOF'
# PlasmaCloud PXE Server dnsmasq configuration
# Interface to listen on (multicast network)
interface=eth0
# DHCP range for cluster nodes
dhcp-range=192.168.100.100,192.168.100.150,12h
# DHCP options
dhcp-option=3,192.168.100.1 # Gateway
dhcp-option=6,192.168.100.1 # DNS server
# Static DHCP leases for nodes
dhcp-host=52:54:00:00:01:01,node01,192.168.100.11
dhcp-host=52:54:00:00:01:02,node02,192.168.100.12
dhcp-host=52:54:00:00:01:03,node03,192.168.100.13
# DNS domain
domain=plasma.local
local=/plasma.local/
# Enable TFTP
enable-tftp
tftp-root=/var/lib/tftpboot
# Logging
log-queries
log-dhcp
# PXE boot configuration (optional - for future PXE boot testing)
# dhcp-boot=pxelinux.0
EOF
# 9. Create TFTP boot directory
mkdir -p /mnt/var/lib/tftpboot
# 10. Copy network configuration to new system
cp /tmp/interfaces /mnt/etc/network/interfaces
# 11. Configure SSH
echo "PermitRootLogin yes" >> /mnt/etc/ssh/sshd_config
# 12. Enable services in new system
chroot /mnt rc-update add networking boot
chroot /mnt rc-update add dnsmasq default
chroot /mnt rc-update add sshd default
# 13. Set root password (for SSH access)
echo "root:plasmacloud" | chroot /mnt chpasswd
echo ""
echo "=== Installation Complete ==="
echo "System will reboot from disk"
echo "PXE server will be available at: 192.168.100.1"
echo "DHCP range: 192.168.100.100-150"
echo "SSH: ssh root@192.168.100.1 (password: plasmacloud)"
echo ""
echo "Press Enter to reboot..."
read
reboot