Intro
Here is an example of a script I use to perform an unattended install of a VMware vSphere ESX 4.1 host.
I install on HP Blades, so therefore I started with taking control of the ILO, mount the VMware ISO and a local folder on my pc containing the ks.cfg file. Later I started to use FTP for the ks.cfg and repo files.
After booting the server wait for the ESX Install screen, move the cursor to the option "ESX Scripted Install using USB ks.cfg" and press F2 to alter the commandline (don't press enter yet).
Add the following parameters: ESXHOST=YourHostName ESXIP=YourIpAddress VMIP=VMotionIpAddress
You can also get the ks.cfg file from a webserver by adding the following parameters:
usb=http://webserver/ks.cfg ip=10.1.0.5 netmask=255.255.240.0 gateway=10.1.0.1 vlanid=1
Just use the CDROM or ISO to start the install (instead of PXE boot). You can disconnect the CDROM after the first reboot, not before.
By editing the isolinux.cfg file in the DVD you can create your own start menu while booting from the ISO. For me it's an excellent way to save time. I can supply the input parameters for users. And automatically boot from the harddrive if no selection in made by a user after 30 seconds, instead of going into the ESX GUI install mode. Last thing is handy if the ISO is constantly mounted during the installation.
You can download the script here! Leave a reply if you got some comments AND please click on a google add to on the right side of this page to support me sharing more knowledge for free!
KS.CFG
# — VMware ESX 4.x unattended installatie
# Roderick Derks
# 20100810
# v0.31 FTP
#
# Dit script is in vier fases onder te verdelen:
# 1. PRE fase: voorbereiden commando's mbv variabelen voor de Kickstart commando fase
# 2. KICKSTART commando's fase: uitvoer commando's voor installatie, variabelen zijn niet te gebruiken in deze fase
# 3. POST fase: voorbereiden commando's om ESX te configureren, daadwerkelijke uitvoer hievan na de reboot
# 4. Reboot en uitvoeren scripts gemaakt in POST fase nadat ESX volledig draait en de ESX commando's beschikbaar zijn.
#
# Goed om te weten: tijdens de installatieprocedure heb je toegang tot drie drives:
# 1. /mnt/source – source rpm files (dvd of ftp/http server)
# 2. /mnt/sysimage – filesysteem Linux Service Console in wording (na formatatteren op +/- 20% installatie beschikbaar): echo hoi > /mnt/sysimage/root/haha genereert file haha in homedir root
# 3. /mnt/usbdisk – files op de USB
#
# Base via HTTP -> Op webserver (IIS): Enable browsing in directories en schakel optie "standaarddocumenten" uit (tab documents)
#
# Installatie starten met parameters ESXHOST=hostname ESXIP=ipadres VMIP=vmotion_ipadres
#
# v0.22 toevoegen VMotion portgroup en ip adres, verwijderen standaard VM Network portgroup
# v0.23 andere behandeling saved_variables file in POST NO-CHROOT sectie; refresh en sleep voor aanschakelen vmotion
# v0.24 tekstuele aanpassingen
# v0.25 _POST02 gecombineerd met _POST01
# v0.26 Banner toegevoegd voor SSH
# v0.27 Dangerous: Root access toestaan via SSH
# v0.28 Aanpassing moment inlezen variabelen in POST sectie
# v0.29 sleep ingebouwd voordat check start of vmware-host service draait, dit om foutmelding te voorkomen; tekstuele aanpassingen
# v0.30 FTP ingeschakeld voor installatie (ks.cfg file en REPO)
# v0.31 NTP config toegevoegd
#
#########################################################################
#Licensing
accepteula
# Installation settings
keyboard us
timezone 'Europe/Amsterdam'
# Authentication
auth
# testen script
#dryrun
# Uncomment to use first detected disk and overwrite VMFS (zorg er voor dat je geen VMFS Datastores aanbiedt aan de ESX host die je niet kwijt wilt):
clearpart –firstdisk –overwritevmfs
# Installation settings
#install cdrom
#install url http://10.120.37.29/esx/4.1
install url ftp://10.120.37.29/esx/4.1
reboot
# set root password
rootpw –iscrypted $1$Fu5x1y5O$ZrZ492Sh0OB0qx6uWfX6u/
# start opdrachten in files gegenereert in PRE fase
%include /partition-list
%include /network-config
############################################################################
# PRE FASE- onderstaand gedeelte wordt uitgevoerd VOOR de Kickstart Commands
############################################################################
%pre –interpreter=bash
# uitlezen van de meegegeven parameters tijdens starten installatie
set — `cat /proc/cmdline`
for I in $*; do case "$I" in *=*) eval $I;; esac; done
echo Hostname being used: ${ESXHOST}
echo IP being used: ${ESXIP}
echo VMotion IP being used:${VMIP}
/bin/cat > /partition-list <<_PRE01
clearpart –firstdisk –overwritevmfs
#Example manual partitioning configuration
part /boot –fstype=ext3 –size=1100 –onfirstdisk
part None –fstype=vmkcore –size=110 –onfirstdisk
part ${ESXHOST}-LocalStorage –fstype=vmfs3 –size=18000 –grow –onfirstdisk
virtualdisk disk1 –size=16000 –onvmfs=${ESXHOST}-LocalStorage
part / –fstype=ext3 –size=6000 –grow –onvirtualdisk=disk1
part /home –fstype ext3 –size=512 –onvirtualdisk=disk1
part swap –fstype=swap –size=1600 –onvirtualdisk=disk1
part /var –fstype=ext3 –size=4096 –onvirtualdisk=disk1
part /tmp –fstype=ext3 –size=1024 –onvirtualdisk=disk1
part /opt –fstype=ext3 –size=2048 –onvirtualdisk=disk1
_PRE01
/bin/cat > /network-config <<_PRE02
# configureren vSwitch0 met ip adres voor Service Console in juiste VLAN
network –addvmportgroup=true –device=vmnic0 –vlanid=108 –bootproto=static –ip=${ESXIP} –netmask=255.255.240.0 –gateway=10.108.0.1 –nameserver=10.50.1.13,10.50.1.15 –hostname=${ESXHOST}
_PRE02
# Opslaan variabelen in een script zodat deze later gebruikt kunnen worden in hte POST gedeelte, anders verlies je deze
/bin/cat > /saved_variables <<_PRE03
ESXHOST=${ESXHOST}
IP=${ESXIP}
VMIP=${VMIP}
_PRE03
############################################################################
# POST FASE – onderstaand gedeelte wordt uitgevoerd NA de Kickstart Commands
############################################################################
# POST NO-CHROOT sectie: nodig om files te kunnen kopieren tussen de twee werelden (tijdelijke VM en het definitieve LINUX filesysteem)
%post –interpreter=bash –nochroot
# Kopieeren van op tijdelijke VM opgeslagen script met variabelen naar het definitieve filesysteem
# Script saved_variables bevat eerder verzamelde variabele die na de reboot verloren gaan, maar die willen we nog gebruiken (VMotion IP adres)
cp /saved_variables /mnt/sysimage/root/saved_variables
# NORMALE POST sectie vanuit / van filesysteem ESX Service Console
%post –interpreter=bash
# inlezen opgeslagen variabelen in saved_variables bestand
. /root/saved_variables
# start cat commando met gebruik van \ om zo eenvoudig de niet gewenste interpretatie van special characters te voorkomen
/bin/cat > /root/esx_config.sh <<_POST01
#!/bin/bash
# v0.31 FTP
# inlezen opgeslagen variabelen in saved_variables bestand
. /root/saved_variables
####################################################
#Wait until host service is ready
####################################################
echo Wachten tot VMware hostservice draait..
sleep 20
while ! vmware-vim-cmd /hostsvc/runtimeinfo > /dev/null 2>$1; do
sleep 20
done
#################
# toevoegen users
#################
echo toevoegen user vmadmin..
/usr/sbin/useradd -p eF2VP8ZAd0quc -c "vmadmin" vmadmin -G root
############################################################################
# Configure Service Console Memory to 800MB and reboot after script finishes
############################################################################
echo Aanpassen geheugen Service Console naar 800MB..
/usr/bin/vmware-vim-cmd /hostsvc/memoryinfo 838860800
/usr/sbin/esxcfg-boot -b
/usr/sbin/esxcfg-boot -t
#######################################
# DANGEROUS Allow ROOT access using SSH
#######################################
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sed -e 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.new
mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_config
#######
# NTP
#######
esxcfg-firewall -e ntpClient
cp /etc/ntp.conf /etc/ntp.conf.orig
echo restrict default kod nomodify notrap noquerynopeer > /etc/ntp.conf
echo restrict 127.0.0.1 >> /etc/ntp.conf
echo server 10.50.1.9 >> /etc/ntp.conf
echo driftfile /var/lib/ntp/drift >> /etc/ntp.conf
/sbin/chkconfig –level 345 ntpd on
/etc/init.d/ntpd start
#######################
# Installeer HP Tools
#######################
echo Downloaden en installeren HP management software..
mkdir -p /root/HP
#Download hpmgmt tar file
#esxcfg-firewall –allowOutgoing
#wp-download http://10.120.37.29/hpmgmt-8.5.1-vmware4x.tgz /root/HP/.
#wp-download http://10.120.37.29/hpmgmt.conf /root/HP/.
#esxcfg-firewall –blockOutgoing
esxcfg-firewall -e ftpClient
lwp-download ftp://10.120.37.29/hpmgmt-8.5.1-vmware4x.tgz /root/HP/.
lwp-download ftp://10.120.37.29/hpmgmt.conf /root/HP/.
esxcfg-firewall -d ftpClient
cd /root/HP
tar xzf hpmgmt-8.5.1-vmware4x.tgz
cd hpmgmt/851
./install851vibs.sh –silent –inputfile /root/HP/hpmgmt.conf
cd /root
rm -Rf HP
#########
# vRanger
#########
echo "Enabling SSH client voor vRanger"
esxcfg-firewall -e sshClient
# toevoegen portgroup VMotion met vlan 40
echo Toevoegen portgroup VMotion met vlan 40
/usr/sbin/esxcfg-vswitch –add-pg=VMotion vSwitch0
# toevoegen VLAN aan VMotion netwerk
echo Toevoegen VLAN aan VMotion netwerk
/usr/sbin/esxcfg-vswitch –pg=VMotion –vlan=40 vSwitch0
# toevoegen IP adres VMotion netwerk
echo Toevoegen IP adres VMotion netwerk
/usr/sbin/esxcfg-vmknic –add –ip ${VMIP} –netmask 255.255.255.0 –portgroup VMotion
# refresh network settings voor het aanzetten van vmotion
echo Refresh network settings voor het aanzetten van vmotion
/usr/bin/vmware-vim-cmd internalsvc/refresh_network
sleep 5
# enable vmotion op portgroup VMotion (escape de special characters omdat deze pas later gebruikt moeten worden) – let op gebruikte escape commando voor $ teken
echo Enable vmotion op portgroup VMotion
VMK=\$(esxcfg-vmknic -l |grep VMotion |awk '{print \$1}')
/usr/bin/vmware-vim-cmd hostsvc/vmotion/vnic_set \$VMK
# verwijderen default aangemaakte VM Network portgroup op switch vSwitch0
echo Verwijderen default aangemaakte VM Network portgroup op switch vSwitch0
/usr/sbin/esxcfg-vswitch –del-pg "VM Network" vSwitch0
# refresh network settings
echo Refresh network settings
/usr/bin/vmware-vim-cmd internalsvc/refresh_network
########
# reboot
########
echo Ready…!
echo Maak na de reboot de server lid van vCenter en gebruik Host Profiles om de configuratie af te ronden.
sleep 15
echo Rebooting..
shutdown -r 0
# END
_POST01
cat >> /etc/ssh/ssh_banner <<\_POST02
** PROPRIETARY INFORMATION *****************************************************
All content of this system and its associated sub-systems are PROPRIETARY
INFORMATION and remain the sole and exclusive property of
http://www.roderick-ict.nl.
This system may be accessed and used by authorized personnel only.
Authorized users may only perform authorized activities and may not exceed
the limits of such authorization. Disclosure of information found in this
system for any unauthorized use is *STRICTLY PROHIBITED*. All activities on
this system are subject to monitoring. Intentional misuse of this system
can result in disciplinary action or criminal prosecution.
********************************************************************************
_POST02
# aanpassen config sshd, actief na herstart sshd of reboot server
echo Banner /etc/ssh/ssh_banner >> /etc/ssh/sshd_config
######################################################################
# configureren rc.local voor eenmalig uitvoering scripts NA de 1e boot
######################################################################
# backup originele rc.local maken
cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup
# test:
cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup2
# executable rechten geven aan het script
chmod +x /root/esx_config.sh
#info toevoegen aan rc.local
cat >> /etc/rc.d/rc.local <<_POST03
# eenmalig uitvoeren scripts
echo —- UITVOEREN SCRIPT /root/esx_config.sh
/root/esx_config.sh
# Terugplaatsen rc.local.backup naar rc.local (restoren van origineel)
# waardoor eenmalige uitvoer script is gegarandeerd
cp /etc/rc.d/rc.local /root/rc.local
mv -f /etc/rc.d/rc.local.backup /etc/rc.d/rc.local
_POST03
ISOLUNUX.CFG
default skip-install
gfxboot bootlogo
prompt 1
#menu title ESX build 260247
timeout 300
LABEL skip-install
menu default
menu label ^Boot from first hard disk
localboot 0x80
LABEL roderick-ict.nl-iso
menu label JBZ Install from ISO – Druk op F2 en voer gegevens in
kernel vmlinuz
append initrd=initrd.img debugLogToSerial=1 mem=512M ks=usb ESXHOST=hostname ESXIP=ipaddress VMIP=vmotionip quiet
LABEL roderick-ict.nl-ftp
menu label JBZ Install from FTP -Druk op F2 en voer gegevens in
kernel vmlinuz
append initrd=initrd.img debugLogToSerial=1 mem=512M ks=ftp://10.1.7.29/esx/4.1/ks.cfg vlanid=1 ESXHOST=ESXxx ESXIP=10.1.5.xx VMIP=192.168.1.xx quiet
LABEL esx
menu label Install ESX in graphical mode
kernel vmlinuz
append initrd=initrd.img debugLogToSerial=1 vmkConsole=false mem=512M quiet
LABEL esx-text
menu label Install ESX in text mode
kernel vmlinuz
append initrd=initrd.img debugLogToSerial=1 mem=512M text quiet
LABEL usb-ks
menu label ESX Scripted Install using USB ks.cfg
kernel vmlinuz
append initrd=initrd.img debugLogToSerial=1 mem=512M ks=usb quiet
Leave a Reply