2012年12月29日 星期六

PXE boot setup for ESXi 5 installation

Hardware setup

  1. VMware Workstation 8.0.4 with a virtual network bridged to external network.
    • The virtual network needs to be bridged and cannot be Host-only or else the PXE boot does not work for the TFTP
  2. Virtual Machine with 4 vCPU (2 dual-core processors), 4 GB memory and 60 GB virtual disk running RHEL 6.3 for PXE server
  3. Virtual Machine with 2 vCPU (2 single-core processors), 2 GB memory and 40 GB virtual disk for ESXi 5 installation

Software setup

  1. syslinux 3.86
    • ESXi 5 PXE boot installation only works with syslinux 3.86. syslinux 4.0.6 is not compatible, for example, APPEND -c boot.cfg code cannot be recognized on the PXE configuration file
  2. tftp-server 0.49
  3. dhcp 4.1.1
  4. httpd 2.2.15
  5. VMware Workstation 8.0.4

Software installation and configuration of PXE server

  1. tftp-server
    • yum install tftp-server
    • sed -e 's/\(\s\*\)disable\(\s\*\)= yes/\1disable\2= no/' -i /etc/xinetd/tftp
    • service xinetd start
    • cd /; ln -s /var/lib/tftpboot
  2. dhcp
    • yum install dhcp
    • cd /etc/dhcp
    • cp -rp dhcpd.conf dhcpd.conf.`date +%Y%m%d`
    • Update dhcpd.conf as shown on dhcpd.conf in references section
    • cd /etc/sysconfig
    • cp -rp dhcpd dhcpd.`date +%Y%m%d`
    • sed -e 's/DHCPDARGS=$/DHCPDARGS=eth1/' -i dhcpd
    • service dhcpd start 
  3. syslinux
    • yum install perl-Crypt-PasswdMD5-1.3-6.el6.noarch -y
    • yum install perl-Digest-SHA1-2.12-2.el6.x86_64 -y
    • wget ftp://ftp.ntua.gr/pub/linux/scientificlinux/6.0/x86_64/os/Packages/syslinux-3.86-1.1.el6.x86_64.rpm
    • rpm -ivh syslinux-3.86-1.1.el6.x86_64.rpm
    • cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
    • mkdir -p /tftpboot/pxelinux.cfg
    • Put the PXE configuration file as 01-mac_address_of_target_ESXi_host under the directory /tftpboot/pxelinux.cfg.  Sample is shown in references section.
      • Note: The MAC address has to be in lower case hexadecimal characters
  4. httpd
    • httpd is installed by default on RHEL6 and so no need to install the package
    • chkconfig httpd on; service httpd on
    • cd /var/www/html ; mkdir -p /var/www/html/esx5i_ksFiles
    • Update ks.cfg as shown on ks.cfg in references section
  5. Firewall
    •  Run system-config-firewall-tui to enable rule to allow tftp and http incoming traffic
  6. ESXi 5 image repository
    • On the PXE server VM, connect the CDROM to the ESXi 5 ISO image
    • mount /dev/sr0 /mnt
    • cd /mnt
    • tar cvf - . | (cd /tftpboot; tar xvf -)
    • Update /tftpboot/boot.cfg to indicate the location of the kickstart configuration file ks.cfg as follows.
      • sed -e 's/\(kernelopt=runweasel\)/\1 ks=http:\/\/192.168.88.1\/esx5i_ksFiles\/ks.cfg/' -i boot.cfg

Next steps

  1. Customize the kickstart configuration file ks.cfg for post installation setup.
  2. Implementation of ESXi 5 auto deploy feature

References

  • dhcpd.conf
    • option domain-name "wolfliar.local";
    • option domain-name-servers dc1.wolfliar.local;
    • default-lease-time 600;
    • max-lease-time 7200;
    • ddns-update-style none;
    • allow booting;
    • allow bootp;
    • authoritative;
    • log-facility local7;
    • class "pxeclients" {
    •   match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    •   next-server 192.168.88.1;
    •   filename "pxelinux.0";
    • }
    • subnet 192.168.88.0 netmask 255.255.255.0 {
    •   range 192.168.88.100 192.168.88.149;
    • }
  • 01-mac_address_of_target_ESXi_host
    • DEFAULT menu.c32 
    • NOHALT 1
    • PROMPT 0
    • TIMEOUT 80
    • LABEL install
    •   KERNEL mboot.c32
    •   APPEND -c boot.cfg
    •   MENU LABEL ESXi-5.0.0-469512-standard ^Installer
    • LABEL hddboot
    •   LOCALBOOT 0x80
    •   MENU LABEL ^Boot from local disk
    •  
    • MENU TITLE ESXi-5.0.0-469512-standard Boot Menu
  • ks.cfg
    • #
    • # Sample scripted installation file
    • #
    • # Accept the VMware End User License Agreement
    • vmaccepteula
    •  
    • # Set the root password for the DCUI and Tech Support Mode
    • rootpw mypassword
    •  
    • # Install on the first local disk available on machine
    • install --firstdisk --overwritevmfs
    •  
    • # Set the network to DHCP on the first network adapter
    • network --bootproto=dhcp --device=vmnic0
    •  
    • # A sample post-install script
    • %post --interpreter=python --ignorefailure=true
    • import time
    • stampFile = open('/finished.stamp', mode='w')
    • stampFile.write( time.asctime() )
    •  
    • %firstboot --interpreter=busybox
    • # Remove the uplink to the PXE boot environment from the 
    • primary vSwitch
    • esxcfg-vswitch -U vmnic4 vSwitch0