Project

General

Profile

VMware ESXi » History » Version 20

Jochen Schalanda, 12/28/2011 08:29 AM
Fixed markup

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