# -- VMware ESX 4.x unattended installatie # Roderick Derks roderick@roderick-ict.nl # 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