VMware ESXi » History » Revision 12
Revision 11 (Corey Osman, 12/27/2011 10:37 PM) → Revision 12/23 (Corey Osman, 12/27/2011 10:43 PM)
h1. How to Provision a VMware ESXi server using foreman Although puppet will not run under ESX server we can still use foreman to kickstart the server using PXE. h2. Summary of what you need to do: # Copy iso contents of ESXi to your media directory # Copy the esx boot files to your tftp directory # Create a ESX Installation Medium in Foreman # Create a ESX operating system in foreman # Create a ESX partition table (optional) template # Create a ESX kickstart template in foreman # Create a ESX pxe or gpxe template for ESX in foreman h3. Copy iso contents of ESXi to your media directory (example only) <pre> mkdir /mnt/iso1 mkdir -p /var/www/html/repos/vmware/esxi4.1/ mount -o loop esxi-iso-file.iso /mnt/iso1 (example for RHEL based distros) rsync -avz /mnt/iso1/ /var/www/html/repos/vmware/esxi4.1/ </pre> h3. Copy the esx boot files to your tftp directory (must have all of these) <pre> cp /var/www/html/repos/vmware/esxi4.1/mboot.c32 /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/vmkboot.gz /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/vmkernel.gz /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/sys.vgz /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/cim.vgz /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/ienviron.vgz /var/lib/tftpboot/boot/vmware/ cp /var/www/html/repos/vmware/esxi4.1/install.vgz /var/lib/tftpboot/boot/vmware/ </pre> h3. Create the installation medium based on where you put your esx4.1 iso contents # Create new medium # vmware # path: http://192.168.1.88/repos/vmware/esxi$version/ (example only) # OS: ESXi4.1 (can define later after making operating system) h3. Create a ESX operating system in foreman (Example only) # More-->Operating Systems-->New # Name: ESXi # Major: 4 # Minor 1 # OS Family: Redhat (there is no vmware yet) # Arch: x86_64 # Choose any partition tables if you defined any (can do later) # Choose the vmware installation media (can do later) h3. Create a Partition table in Foreman (optional) # Name: esxi4.1 (name whatever you need to) # Operating System: ESXi 4.1 # Layout: (Something like the following) <pre> part '/boot' --fstype=ext3 --size=1100 --ondisk=mpx.vmhba0:C0:T0:L0 part 'none' --fstype=vmkcore --size=110 --ondisk=mpx.vmhba0:C0:T0:L0 part 'datastore1' --fstype=vmfs3 --size=9004 --grow --ondisk=mpx.vmhba0:C0:T0:L0 virtualdisk 'esxconsole' --size=8004 --onvmfs='datastore1' part 'swap' --fstype=swap --size=1000 --onvirtualdisk='esxconsole' part '/var/log' --fstype=ext3 --size=2000 --onvirtualdisk='esxconsole' part '/' --fstype=ext3 --size=5000 --grow --onvirtualdisk='esxconsole' </pre> h3. Create a ESX kickstart template in foreman # More-->provisioning Templates-->new # Type: provision # Name: esxi # Use something like the following for the template: <pre> accepteula variable: <%25= vlan %25> # Canonical drive names: #clearpart --drives=mpx.vmhba0:C0:T0:L0 # Uncomment to use first detected disk: #clearpart --firstdisk # Uncomment the esxlocation line and comment out the clearpart # and physical partitions to do a non-destructive reinstall. #esxlocation --uuid=881475a6-700a-4b33-aa24-048909df6c14 install url <%25= @mediapath %25> rootpw --iscrypted <%25= root_pass %25> # required for kickstart autopart --firstdisk --overwritevmfs # required for kickstart (foreman doesn't do static IPs yet so will need a way to get around this) # if this option is missing the installer will use dhcp #network --addvmportgroup=true --device=vmnic0 --vlanid=127 --bootproto=static --ip=10.0.x.3 --netmask=255.255.255.0 #--gateway=10.0.x.x --nameserver=10.0.x.1,10.0.x.2 --hostname <%25= @host %25> <%25 if @dynamic -%25> %25include /tmp/diskpart.cfg <%25 else -%25> <%25= @host.diskLayout %25> <%25 end -%25> reboot #%25post #/usr/bin/sleep 90 # Setup ALUA #/usr/sbin/esxcli nmp satp setdefaultpsp --satp VMW_SATP_ALUA --psp VMW_PSP_RR # Create vSwitch0, VMMotion1 and the Service Console port group #/usr/sbin/esxcfg-vswitch -a vSwitch1 # Associate vnics to vswitch #/usr/sbin/esxcfg-vswitch -L vmnic2 vSwitch1 #/usr/sbin/esxcfg-vswitch -L vmnic3 vSwitch1 #/usr/sbin/esxcfg-vswitch -L vmnic1 vSwitch0 #/usr/sbin/esxcfg-vswitch -A 10.0.x vSwitch1 #/usr/sbin/esxcfg-vswitch -A 10.0.x vSwitch1 # configure the VLAN ids if any #/usr/sbin/esxcfg-vswitch -p 10.0.x -v 30 vSwitch1 #/usr/sbin/esxcfg-vswitch -p 10.0.x -v 23 vSwitch1 #/usr/sbin/esxcfg-vswitch -A VMkernel vSwitch0 # configure the VLAN ids if any #/usr/sbin/esxcfg-vswitch -p VMkernel -v 12 vSwitch0 #/usr/sbin/esxcfg-vswitch -D "VM Network" vSwitch0 # Add a virtual switch #/usr/sbin/esxcfg-vswitch -A "Management Network" vSwitch0 # configure the VLAN ids if any #/usr/sbin/esxcfg-vswitch -p "Management Network" -v 12 vSwitch0 # Add VM Kernel Interface #/usr/sbin/esxcfg-vmknic -a -i 10.0.x.x -n 255.255.255.0 "VMkernel" #/usr/sbin/esxcfg-route 10.0.x.x # Enable Vmotion on Vkernel #/usr/bin/vmware-vim-cmd hostsvc/vmotion/vnic_set vmk0 # Inform the build system that we are done. echo "Informing Foreman that we are built" wget -q -O /dev/null --no-check-certificate <%25= foreman_url %25> </pre> h3. Create a ESX pxe or gpxe template for ESX in foreman # More-->provisioning Templates-->new # Type: pxelinux or gpxe (untested with gpxe) # Name: esxi-pxe Do not change anything other than the name and location (boot/vmware) of the template. All the files are required and must be in this exact order and with "---" separating each file The files referenced below should be referenced from the root of your tftpboot folder /var/lib/tftpboot/boot/vmware/ <pre> default ESXi4u1HP-x86_64 LABEL ESXi4u1HP-x86_64 kernel /boot/vmware/mboot.c32 MENU LABEL ESXi4u1HP-x86_64 append boot/vmware/vmkboot.gz ks=<%25= foreman_url("provision")%25> --- boot/vmware/vmkernel.gz --- boot/vmware/sys.vgz --- boot/vmware/cim.vgz --- boot/vmware/ienviron.vgz --- boot/vmware/install.vgz </pre>