Project

General

Profile

VMware ESXi » History » Version 14

Corey Osman, 12/27/2011 10:54 PM

1 1 Corey Osman
h1. How to Provision a VMware ESXi server using foreman
2
3
Although puppet will not run under ESX server we can still use foreman to kickstart the server using PXE.
4
5
h2. Summary of what you need to do:
6
# Copy iso contents of ESXi to your media directory
7
# 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
# Create a ESX partition table (optional) template
11
# Create a ESX kickstart template in foreman
12
# Create a ESX pxe or gpxe template for ESX in foreman
13
14
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
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
</pre>
22
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
cp /var/www/html/repos/vmware/esxi4.1/mboot.c32 /var/lib/tftpboot/boot/vmware/
26
cp /var/www/html/repos/vmware/esxi4.1/vmkboot.gz /var/lib/tftpboot/boot/vmware/
27
cp /var/www/html/repos/vmware/esxi4.1/vmkernel.gz /var/lib/tftpboot/boot/vmware/
28
cp /var/www/html/repos/vmware/esxi4.1/sys.vgz /var/lib/tftpboot/boot/vmware/
29
cp /var/www/html/repos/vmware/esxi4.1/cim.vgz /var/lib/tftpboot/boot/vmware/
30
cp /var/www/html/repos/vmware/esxi4.1/ienviron.vgz /var/lib/tftpboot/boot/vmware/
31
cp /var/www/html/repos/vmware/esxi4.1/install.vgz /var/lib/tftpboot/boot/vmware/
32
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
# Create new medium
37
# vmware
38
# path: http://192.168.1.88/repos/vmware/esxi$version/  (example only)
39
# OS: ESXi4.1  (can define later after making operating system)
40
41 8 Corey Osman
h3. Create a ESX operating system in foreman (Example only)
42
# More-->Operating Systems-->New
43
# Name: ESXi
44
# Major: 4
45
# Minor 1
46
# OS Family: Redhat (there is no vmware yet)
47
# Arch: x86_64
48
# Choose any partition tables if you defined any (can do later)
49 1 Corey Osman
# Choose the vmware installation media (can do later) 
50
51 10 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
<pre>
56
part '/boot'  --fstype=ext3 --size=1100  --ondisk=mpx.vmhba0:C0:T0:L0
57
part 'none'  --fstype=vmkcore --size=110  --ondisk=mpx.vmhba0:C0:T0:L0
58
part 'datastore1'  --fstype=vmfs3 --size=9004 --grow  --ondisk=mpx.vmhba0:C0:T0:L0
59
virtualdisk 'esxconsole' --size=8004 --onvmfs='datastore1'
60
61
part 'swap'  --fstype=swap --size=1000 --onvirtualdisk='esxconsole'
62
part '/var/log'  --fstype=ext3 --size=2000 --onvirtualdisk='esxconsole'
63
part '/'  --fstype=ext3 --size=5000 --grow --onvirtualdisk='esxconsole'
64 1 Corey Osman
</pre>
65 10 Corey Osman
66
h3. Create a ESX kickstart template in foreman
67 11 Corey Osman
# More-->provisioning Templates-->new
68
# Type: provision
69
# Name: esxi
70
# Use something like the following for the template:
71
<pre>
72
accepteula
73
74
# Canonical drive names:
75
#clearpart --drives=mpx.vmhba0:C0:T0:L0
76
# Uncomment to use first detected disk:
77
#clearpart --firstdisk
78
79
# Uncomment the esxlocation line and comment out the clearpart
80
# and physical partitions to do a non-destructive reinstall.
81
#esxlocation --uuid=881475a6-700a-4b33-aa24-048909df6c14
82
install url <%25= @mediapath %25>
83
84
rootpw --iscrypted <%25= root_pass %25>
85
86
# required for kickstart
87
autopart --firstdisk --overwritevmfs
88
89
# required for kickstart (foreman doesn't do static IPs yet so will need a way to get around this)
90
# if this option is missing the installer will use dhcp
91
#network --addvmportgroup=true --device=vmnic0 --vlanid=127 --bootproto=static --ip=10.0.x.3 --netmask=255.255.255.0 
92
#--gateway=10.0.x.x --nameserver=10.0.x.1,10.0.x.2 --hostname <%25= @host %25>
93
94
95
<%25 if @dynamic -%25>
96
%25include /tmp/diskpart.cfg
97
<%25 else -%25>
98
<%25= @host.diskLayout %25>
99
<%25 end -%25>
100
101
reboot
102
#%25post
103
#/usr/bin/sleep 90
104
# Setup ALUA
105
#/usr/sbin/esxcli nmp satp setdefaultpsp --satp VMW_SATP_ALUA --psp VMW_PSP_RR
106
107
# Create vSwitch0, VMMotion1 and the Service Console port group
108
#/usr/sbin/esxcfg-vswitch -a vSwitch1
109
# Associate vnics to vswitch
110
#/usr/sbin/esxcfg-vswitch -L vmnic2 vSwitch1
111
#/usr/sbin/esxcfg-vswitch -L vmnic3 vSwitch1
112
#/usr/sbin/esxcfg-vswitch -L vmnic1 vSwitch0
113
#/usr/sbin/esxcfg-vswitch -A 10.0.x vSwitch1
114
#/usr/sbin/esxcfg-vswitch -A 10.0.x vSwitch1
115
# configure the VLAN ids if any
116
#/usr/sbin/esxcfg-vswitch -p 10.0.x -v 30 vSwitch1
117
#/usr/sbin/esxcfg-vswitch -p 10.0.x -v 23 vSwitch1
118
#/usr/sbin/esxcfg-vswitch -A VMkernel vSwitch0
119
# configure the VLAN ids if any
120
#/usr/sbin/esxcfg-vswitch -p VMkernel -v 12 vSwitch0
121
#/usr/sbin/esxcfg-vswitch -D "VM Network" vSwitch0
122
# Add a virtual switch
123
#/usr/sbin/esxcfg-vswitch -A "Management Network"  vSwitch0
124
# configure the VLAN ids if any
125
#/usr/sbin/esxcfg-vswitch -p "Management Network" -v 12 vSwitch0
126
# Add VM Kernel Interface
127
#/usr/sbin/esxcfg-vmknic -a -i 10.0.x.x -n 255.255.255.0 "VMkernel"
128
#/usr/sbin/esxcfg-route 10.0.x.x
129
130
# Enable Vmotion on Vkernel
131
#/usr/bin/vmware-vim-cmd hostsvc/vmotion/vnic_set vmk0
132
133
# Inform the build system that we are done.
134
echo "Informing Foreman that we are built"
135
wget -q -O /dev/null --no-check-certificate <%25= foreman_url %25>
136
137
</pre>
138 1 Corey Osman
139
h3. Create a ESX pxe or gpxe template for ESX in foreman
140 12 Corey Osman
# More-->provisioning Templates-->new
141
# Type: pxelinux or gpxe (untested with gpxe)
142 1 Corey Osman
# Name: esxi-pxe
143 13 Corey Osman
# Assign the template to the ESXi operating system that you defined earlier
144 12 Corey Osman
Do not change anything other than the name and location (boot/vmware) of the template.
145
All the files are required and must be in this exact order and with "---" separating each file
146
The files referenced below should be referenced from the root of your tftpboot folder  /var/lib/tftpboot/boot/vmware/
147
148
<pre>
149
150
default ESXi4u1HP-x86_64
151
LABEL ESXi4u1HP-x86_64
152
        kernel /boot/vmware/mboot.c32
153
        MENU LABEL ESXi4u1HP-x86_64        
154
        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
155 1 Corey Osman
</pre>
156 13 Corey Osman
157
h3. Additional Steps
158
# Assign the partition table to the ESXi operating system that you defined earlier
159
# Assign the two templates (kickstart, esx-pxe ) to the operating system you defined earlier (more-->operating system-->esx-->templates
160 14 Corey Osman
161
Note:  Currently you will need to staticly assign the network properties in the kickstart each time until foreman can handle these dynamic attributes
162
Note:  This kickstart will overwrite the vmfs volume so please be careful.  
163
Note:  If you remove the the network part the installer will use dhcp and you will need to define your settings after the install.
164
165
Please see the following websites on how to further automate esx settings so your host is ready to go after install
166
167
http://www.virtuallyghetto.com/2010/09/automating-esxi-41-kickstart-tips.html