Project

General

Profile

VMware ESXi » History » Version 19

Corey Osman, 12/27/2011 11:35 PM

1 1 Corey Osman
h1. How to Provision a VMware ESXi server using foreman
2 1 Corey Osman
3 1 Corey Osman
Although puppet will not run under ESX server we can still use foreman to kickstart the server using PXE.
4 1 Corey Osman
5 1 Corey Osman
h2. Summary of what you need to do:
6 1 Corey Osman
# Copy iso contents of ESXi to your media directory
7 1 Corey Osman
# Copy the esx boot files to your tftp directory
8 8 Corey Osman
# Create a ESX Installation Medium in Foreman
9 1 Corey Osman
# Create a ESX operating system in foreman
10 1 Corey Osman
# Create a ESX partition table (optional) template
11 1 Corey Osman
# Create a ESX kickstart template in foreman
12 1 Corey Osman
# Create a ESX pxe or gpxe template for ESX in foreman
13 1 Corey Osman
14 1 Corey Osman
15 4 Corey Osman
h3. Copy iso contents of ESXi to your media directory (example only)
16 1 Corey Osman
<pre>
17 6 Corey Osman
mkdir /mnt/iso1
18 6 Corey Osman
mkdir -p /var/www/html/repos/vmware/esxi4.1/  
19 5 Corey Osman
mount -o loop esxi-iso-file.iso /mnt/iso1  (example for RHEL based distros)
20 4 Corey Osman
rsync -avz /mnt/iso1/ /var/www/html/repos/vmware/esxi4.1/
21 4 Corey Osman
</pre>
22 4 Corey Osman
23 7 Corey Osman
h3. Copy the esx boot files to your tftp directory  (must have all of these)
24 4 Corey Osman
<pre>
25 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/mboot.c32 /var/lib/tftpboot/boot/vmware/
26 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/vmkboot.gz /var/lib/tftpboot/boot/vmware/
27 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/vmkernel.gz /var/lib/tftpboot/boot/vmware/
28 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/sys.vgz /var/lib/tftpboot/boot/vmware/
29 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/cim.vgz /var/lib/tftpboot/boot/vmware/
30 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/ienviron.vgz /var/lib/tftpboot/boot/vmware/
31 4 Corey Osman
cp /var/www/html/repos/vmware/esxi4.1/install.vgz /var/lib/tftpboot/boot/vmware/
32 4 Corey Osman
33 2 Corey Osman
</pre>
34 8 Corey Osman
35 9 Corey Osman
h3. Create the installation medium based on where you put your esx4.1 iso contents
36 9 Corey Osman
# Create new medium
37 9 Corey Osman
# vmware
38 9 Corey Osman
# path: http://192.168.1.88/repos/vmware/esxi$version/  (example only)
39 9 Corey Osman
# OS: ESXi4.1  (can define later after making operating system)
40 9 Corey Osman
41 8 Corey Osman
h3. Create a ESX operating system in foreman (Example only)
42 8 Corey Osman
# More-->Operating Systems-->New
43 8 Corey Osman
# Name: ESXi
44 8 Corey Osman
# Major: 4
45 8 Corey Osman
# Minor 1
46 8 Corey Osman
# OS Family: Redhat (there is no vmware yet)
47 8 Corey Osman
# Arch: x86_64
48 8 Corey Osman
# Choose any partition tables if you defined any (can do later)
49 1 Corey Osman
# Choose the vmware installation media (can do later) 
50 1 Corey Osman
51 18 Corey Osman
h3. Create a Partition table in Foreman (optional)
52 1 Corey Osman
# Name: esxi4.1 (name whatever you need to)
53 13 Corey Osman
# Assign the template to the ESXi operating system that you defined earlier
54 9 Corey Osman
# Layout:  (Something like the following)
55 9 Corey Osman
<pre>
56 9 Corey Osman
part '/boot'  --fstype=ext3 --size=1100  --ondisk=mpx.vmhba0:C0:T0:L0
57 9 Corey Osman
part 'none'  --fstype=vmkcore --size=110  --ondisk=mpx.vmhba0:C0:T0:L0
58 9 Corey Osman
part 'datastore1'  --fstype=vmfs3 --size=9004 --grow  --ondisk=mpx.vmhba0:C0:T0:L0
59 9 Corey Osman
virtualdisk 'esxconsole' --size=8004 --onvmfs='datastore1'
60 9 Corey Osman
61 9 Corey Osman
part 'swap'  --fstype=swap --size=1000 --onvirtualdisk='esxconsole'
62 9 Corey Osman
part '/var/log'  --fstype=ext3 --size=2000 --onvirtualdisk='esxconsole'
63 9 Corey Osman
part '/'  --fstype=ext3 --size=5000 --grow --onvirtualdisk='esxconsole'
64 1 Corey Osman
</pre>
65 10 Corey Osman
66 10 Corey Osman
h3. Create a ESX kickstart template in foreman
67 11 Corey Osman
# More-->provisioning Templates-->new
68 11 Corey Osman
# Type: provision
69 11 Corey Osman
# Name: esxi
70 11 Corey Osman
# Use something like the following for the template:
71 11 Corey Osman
<pre>
72 16 Corey Osman
vmaccepteula
73 1 Corey Osman
74 11 Corey Osman
install url <%25= @mediapath %25>
75 16 Corey Osman
# Set the root password for the DCUI and Tech Support Mode
76 11 Corey Osman
rootpw --iscrypted <%25= root_pass %25>
77 11 Corey Osman
78 11 Corey Osman
# required for kickstart
79 11 Corey Osman
autopart --firstdisk --overwritevmfs
80 11 Corey Osman
81 16 Corey Osman
# Set the network to DHCP on the first network adapater
82 16 Corey Osman
network --bootproto=dhcp --device=vmnic0
83 16 Corey Osman
84 11 Corey Osman
# required for kickstart (foreman doesn't do static IPs yet so will need a way to get around this)
85 11 Corey Osman
# if this option is missing the installer will use dhcp
86 1 Corey Osman
#network --addvmportgroup=true --device=vmnic0 --vlanid=127 --bootproto=static --ip=10.0.x.3 --netmask=255.255.255.0 
87 1 Corey Osman
#--gateway=10.0.x.x --nameserver=10.0.x.1,10.0.x.2 --hostname <%25= @host %25>
88 11 Corey Osman
89 11 Corey Osman
90 11 Corey Osman
<%25 if @dynamic -%25>
91 11 Corey Osman
%25include /tmp/diskpart.cfg
92 11 Corey Osman
<%25 else -%25>
93 11 Corey Osman
<%25= @host.diskLayout %25>
94 1 Corey Osman
<%25 end -%25>
95 1 Corey Osman
96 16 Corey Osman
# A sample post-install script
97 16 Corey Osman
%25post --unsupported --ignorefailure=true
98 11 Corey Osman
99 11 Corey Osman
# Inform the build system that we are done.
100 11 Corey Osman
echo "Informing Foreman that we are built"
101 11 Corey Osman
wget -q -O /dev/null --no-check-certificate <%25= foreman_url %25>
102 11 Corey Osman
103 19 Corey Osman
# Configure additional commands at first boot.
104 19 Corey Osman
%25firstboot --unsupported --interpreter=busybox
105 19 Corey Osman
# Setup VMotion portgroup on vSwitch0
106 19 Corey Osman
esxcfg-vswitch -A VMotion vSwitch0
107 19 Corey Osman
# Setup VMotion IP address
108 19 Corey Osman
esxcfg-vmknic -a VMotion -i [VMKIPADDR] -n 255.255.255.0
109 19 Corey Osman
# Wait for previous command to finish before enabling VMotion
110 19 Corey Osman
sleep 10
111 19 Corey Osman
# Enable VMotion (ESX uses vmware-vim-cmd and ESXi is vim-cmd)
112 19 Corey Osman
vim-cmd hostsvc/vmotion/vnic_set vmk1
113 19 Corey Osman
vim-cmd hostsvc/net/refresh
114 11 Corey Osman
</pre>
115 11 Corey Osman
116 11 Corey Osman
h3. Create a ESX pxe or gpxe template for ESX in foreman
117 1 Corey Osman
# More-->provisioning Templates-->new
118 1 Corey Osman
# Type: pxelinux or gpxe (untested with gpxe)
119 12 Corey Osman
# Name: esxi-pxe
120 12 Corey Osman
# Assign the template to the ESXi operating system that you defined earlier
121 1 Corey Osman
Do not change anything other than the name and location (boot/vmware) of the template.
122 13 Corey Osman
All the files are required and must be in this exact order and with "---" separating each file
123 12 Corey Osman
The files referenced below should be referenced from the root of your tftpboot folder  /var/lib/tftpboot/boot/vmware/
124 12 Corey Osman
125 12 Corey Osman
<pre>
126 12 Corey Osman
127 12 Corey Osman
default ESXi4u1HP-x86_64
128 12 Corey Osman
LABEL ESXi4u1HP-x86_64
129 12 Corey Osman
        kernel /boot/vmware/mboot.c32
130 12 Corey Osman
        MENU LABEL ESXi4u1HP-x86_64        
131 12 Corey Osman
        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
132 12 Corey Osman
</pre>
133 12 Corey Osman
134 1 Corey Osman
h3. Additional Steps
135 13 Corey Osman
# Assign the partition table to the ESXi operating system that you defined earlier
136 13 Corey Osman
# Assign the two templates (kickstart, esx-pxe ) to the operating system you defined earlier (more-->operating system-->esx-->templates
137 13 Corey Osman
138 13 Corey Osman
Note:  Currently you will need to staticly assign the network properties in the kickstart each time until foreman can handle these dynamic attributes
139 14 Corey Osman
Note:  This kickstart will overwrite the vmfs volume so please be careful.  
140 14 Corey Osman
Note:  If you remove the the network part the installer will use dhcp and you will need to define your settings after the install.
141 14 Corey Osman
142 14 Corey Osman
Please see the following websites on how to further automate esx settings so your host is ready to go after install
143 14 Corey Osman
144 14 Corey Osman
http://www.virtuallyghetto.com/2010/09/automating-esxi-41-kickstart-tips.html
145 14 Corey Osman
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1012248
146 16 Corey Osman
147 17 Corey Osman
"Vmware Kickstart Options":http://www.vmware.com/pdf/vsphere4/r41/vsp_41_esxi_i_vc_setup_guide.pdf