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 |