vSphereAutoLab/Build/Automate/PXEMenuConfig.ps1

161 lines
5.9 KiB
PowerShell

<#
.SYNOPSIS
Customizes AutoLab PXE boot menu based on the vSphere and vCloud source files added to TFTP.
.DESCRIPTION
Customizes AutoLab PXE boot menu based on the vSphere and vCloud source files added to TFTP.
.PARAMETER Version
The Version parameter tells the script which PXE boot options to add to the PXE default menu.
.EXAMPLE
C:\PS> PXEMenuConfig.ps1 ESXi51
.EXAMPLE
C:\PS> PXEMenuConfig.ps1 ESXi50
.EXAMPLE
C:\PS> PXEMenuConfig.ps1 ESXi41
.EXAMPLE
C:\PS> PXEMenuConfig.ps1 ESX41
.EXAMPLE
C:\PS> PXEMenuConfig.ps1 vCloud
#>
param($version)
. "C:\PSFunctions.ps1"
switch ($version) {
ESXi60 {
if ((Test-Path "C:\TFTP-Root\ESXi60\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 6.0"))) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 6.0 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL ESXi 6.0 automated builds
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/ESXi60.menu
"@
} else {
Write-BuildLog "ESXi 5.5 already in PXE Menu"
}
}
ESXi55 {
if ((Test-Path "C:\TFTP-Root\ESXi55\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.5"))) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.5 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL ESXi 5.5 automated builds
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/ESXi55.menu
"@
} else {
Write-BuildLog "ESXi 5.5 already in PXE Menu"
}
}
ESXi51 {
if ((Test-Path "C:\TFTP-Root\ESXi51\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.1"))) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.1 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL ESXi 5.1 automated builds
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/ESXi51.menu
"@
} else {
Write-BuildLog "ESXi 5.1 already in PXE Menu"
}
}
ESXi50 {
if ((Test-Path "C:\TFTP-Root\ESXi50\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "ESXi 5.0"))) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 5.0 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL ESXi 5.0 automated builds
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/ESXi50.menu
"@
}
}
ESXi41 {
if (Test-Path "C:\TFTP-Root\ESXi41\*") {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESXi 4.1 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL ESXi 4.1 automated builds
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/ESXi41.menu
"@
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" -Value @"
label esxi1-4
kernel /ESXi41/mboot.c32
append /ESXi41/vmkboot.gz ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx1-4.cfg --- /ESXi41/vmkernel.gz --- /ESXi41/sys.vgz --- /ESXi41/cim.vgz --- /ESXi41/ienviron.vgz --- /ESXi41/install.vgz
menu Label -- Host1 Automated
label esxi2-4
kernel /ESXi41/mboot.c32
append /ESXi41/vmkboot.gz ks=nfs://192.168.199.7/mnt/LABVOL/Build/Automate/Hosts/esx2-4.cfg --- /ESXi41/vmkernel.gz --- /ESXi41/sys.vgz --- /ESXi41/cim.vgz --- /ESXi41/ienviron.vgz --- /ESXi41/install.vgz
menu Label -- Host2 ESXi Automated
"@
}
}
ESX41 {
if ((Test-Path "C:\TFTP-Root\ESX41\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" | Select-String -Pattern "ESX classic"))) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding ESX 4.1 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\ESXi41.menu" -Value @"
label esx2-4
kernel /ESX41/vmlinuz
append initrd=/ESX41/initrd.img debugLogToSerial=1 mem=512M ks=nfs:192.168.199.7:/mnt/LABVOL/Build/Automate/Hosts/esx2-4c.cfg
menu Label -- Host2 ESX classic Automated
"@
}
}
vCloud {
if (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\default" | Select-String -Pattern "vCloud") ) {
Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\default" -Value @"
LABEL Fixes Menu
MENU LABEL vCloud Director automated build
KERNEL pxelinux.cfg/menu.c32
APPEND pxelinux.cfg/vCloud.menu
"@
}
}
vCD51 {
if ((Test-Path "B:\vCD_51\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" | Select-String -Pattern "vCloud Director 5.1"))){
Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud 5.1 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @"
label vCloud51
kernel /vCloud/vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd51-ks.cfg
menu Label vCloud Director 5.1 automated build (DVD iso)
label vCloud51
kernel /vCloud/vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd51-ks-min.cfg
menu Label vCloud Director 5.1 automated build (minimal ISO)
"@
}
}
vCD15 {
if ((Test-Path "B:\vCD_15\*") -and (!(Get-Content "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" | Select-String -Pattern "vCloud Director 1.5"))){
Add-Content -Path "C:\buildlog.txt" -Value "Adding vCloud 1.5 option to PXE menu"
Add-Content -Path "C:\TFTP-Root\pxelinux.cfg\vCloud.menu" -Value @"
label vCloud15
kernel /vCloud/vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd15-ks.cfg
menu Label vCloud Director 1.5 automated build (DVD iso)
label vCloud15
kernel /vCloud/vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=/vCloud/initrd.img network ks=nfs:nfsvers=3:192.168.199.7:/mnt/LABVOL/Build/Automate/vCloud/vcd15-ks-min.cfg
menu Label vCloud Director 1.5 automated build (minimal iso)
"@
}
}
}