Project

General

Profile

Solaris Unattended installation » History » Version 27

David M., 03/15/2012 08:45 AM

1 1 Romain Vrignaud
h1. Solaris Unattended installation
2
3 27 David M.
There are two ways of getting started with installing solaris via foreman. 
4
An more or less automatic setup of everything using a script, or
5
the good old manual way.
6
7
The script for automatic setup currently only works on linux (Tested with RHEL 6, but should also work on other distris as well) and only with ISOs for Solaris 10 (tested with x86 and sparc).
8
9
If you want to use the manual way, scroll down a bit.
10
I recommend to read the manual way even if you using the script, as there might be some useful
11
hints, if automatic setup fails or doesnt seem to work.
12
13
14
h2. Automatic Setup of Solaris media
15
16
Currently the script isn't shipped with foreman, but you can find it "here":http://www.case-of.org/~maniac/foreman/import_solaris_disk.sh
17
18
Using the script is pretty simple. You can either just run it (ensure you are using BASH).
19
If you are lazy (like me), you can pass the name of the Solaris ISO file as first parameter.
20
21
Then just answer the questions you get asked. The part in square-brackets is the default. 
22
It gets used if you just press enter.
23
24
When the script is completed you may have to add the HWModel to Foreman (More->Hardware Model) (basically on SPARC). 
25
26
27
28
h2. Manual setup of Solaris media
29
30
31 4 Oliver Weinmann
h2. Installation Media
32 27 David M.
33 1 Romain Vrignaud
34 11 Oliver Weinmann
First you have to identify the release name of you Solaris install media. To do this check the disc label on your Solaris DVD. 
35
36
<pre>
37
SOL_10_811_SPARC = hw0811
38
</pre>
39
40
I recommend to create a structure to hold more than just one Solaris install media like the following:
41
42
<pre>
43
/Solaris
44
/Solaris/install
45
/Solaris/images
46
/Solaris/jumpstart
47
</pre>
48
49 10 Oliver Weinmann
h3. Linux:
50 1 Romain Vrignaud
51 11 Oliver Weinmann
Copy the contents of the Solaris 10 Install DVD to the local install directory.
52 10 Oliver Weinmann
53 17 Oliver Weinmann
h3. Sparc:
54
55 10 Oliver Weinmann
<pre>
56 11 Oliver Weinmann
cp -r /media/dvd /Solaris/install/Solaris_5.10_sparc_hw0811
57 17 Oliver Weinmann
</pre>
58
59
h3. i386:
60
61
<pre>
62
cp -r /media/dvd /Solaris/install/Solaris_5.10_i386_hw0811
63
</pre>
64
65
Create a link of Solaris_5.10_i386_hw0811 to Solaris_5.10_x86_64_hw0811.
66
67
<pre>
68
cd /Solaris/install
69
ln -s Solaris_5.10_i386_hw0811 Solaris_5.10_x86_64_hw0811
70 1 Romain Vrignaud
</pre>
71
72 12 Oliver Weinmann
Note that hw0811 is the release name that has to match your Solaris install media.
73 11 Oliver Weinmann
74 9 Oliver Weinmann
h3. Solaris:
75 4 Oliver Weinmann
76 1 Romain Vrignaud
Create a directory and run the following script from the Solaris 10 Installation DVD on a Solaris 8 / 10 machine:
77
78 4 Oliver Weinmann
<pre>
79 11 Oliver Weinmann
mkdir -p /Solaris/install/Solaris_5.10_sparc_hw0811
80 4 Oliver Weinmann
cd /cdrom/cdrom0/Solaris_10/Tools
81 11 Oliver Weinmann
./setup_install_server /Solaris/install/Solaris_5.10_sparc_hw0811
82 4 Oliver Weinmann
</pre>
83
84 3 Oliver Weinmann
A Solaris distribution should be declared in the same form as a Linux distribution. There should be an http based access URL, (the path variable,) so that the smart-proxy can
85
download the required components for the build. Currently this step has to be done manually. Simply copy the inetboot files to your tftp directory.
86
87 18 Oliver Weinmann
h3. Sparc
88
89 3 Oliver Weinmann
<pre>
90 4 Oliver Weinmann
cp /Solaris/install/Solaris_5.10_sparc_hw0811/Solaris_10/Tools/Boot/platform/sun4u/inetboot /var/lib/tftpboot/Solaris-5.10-hw0811-SUN4U-inetboot
91 3 Oliver Weinmann
</pre>
92 18 Oliver Weinmann
93
h3. i386
94 21 Oliver Weinmann
95 20 Oliver Weinmann
<pre>
96 22 Oliver Weinmann
cp /Solaris/install/Solaris_5.10_i386_hw0811/boot/grub/pxegrub /var/lib/tftpboot/Solaris-5.10-hw0811-pxegrub
97 20 Oliver Weinmann
</pre>
98 18 Oliver Weinmann
99 3 Oliver Weinmann
As the Solaris jumpstart process is performed via NFS rather than TFTP the distribution media must also be made available for
100 15 Oliver Weinmann
ReadOnly mounting on the clients.
101 1 Romain Vrignaud
102 13 Oliver Weinmann
h3. Linux:
103
104 2 Oliver Weinmann
<pre>
105 13 Oliver Weinmann
vi /etc/exports
106
"/Solaris" *(ro,async,no_root_squash,anonuid=0)
107
</pre>
108
109
h3. Solaris:
110
111
<pre>
112 1 Romain Vrignaud
share -F nfs -o ro,anon=0 /Solaris
113
echo "share -F nfs -o ro,anon=0 /Solaris" >> /etc/dfs/dfstab
114
</pre>
115 15 Oliver Weinmann
116
The fields describing this alternative access naming scheme are revealed on the Media page when a Solaris operating system is selected. The
117
Solaris build can proceed via a conventional package build, where the packages selected are the SUWNCreq minimal install, or a flash build. The flash archives are located under 
118
the distribution directory by default but can be located anywhere that can be accessed via NFS.
119 13 Oliver Weinmann
120
<pre>
121 2 Oliver Weinmann
Name: Solaris Install Media
122
123
Path: http://server/Solaris/install/Solaris_$major.$minor_$arch_$release
124
Media Path: server:/Solaris/install/Solaris_$major.$minor_$arch_$release
125 5 Oliver Weinmann
Config Path: server:/jumpstart
126 2 Oliver Weinmann
Image Path: server:/Solaris/images
127
</pre>
128
129 5 Oliver Weinmann
h2. Jumpstart files
130 1 Romain Vrignaud
131 24 David M.
The Solaris jumpstart process occurs in two phases; a diskless client is first booted and then in phase two, the host mounts its build media and configuration files from an NFS location and proceeds with the build. Foreman provides a skeleton configuration directory structure suitable for NFS mounting on the host. In this structure are files that are customised to forward configuration requests to the Foreman instance. This directory tree, located at .../foreman/extras/jumpstart, should be NFS shared to the subnet that contains any potential Solaris clients. Some customization of this directory tree may be required. 
132
133
h3. Customize dynamic_* scripts
134
135
An important step, as mentioned above, is to check if the dynamic_profile and dynamic_finish scripts fits your needs.
136
If your foreman host is not called "foreman" in DNS or is not reachable on port 80, you have to change the value of the "foreman" variable.
137
138
dynamic_profile (line #15):
139
<pre>
140
perl -p -i -e "s/hosts:.*/hosts: files dns/" /tmp/root/etc/nsswitch.conf
141
# and then download our configuration from foreman
142
foreman="foreman"
143
./curl.$arch -s http://$foreman/unattended/provision > ${SI_PROFILE}
144
</pre>
145
146
dynamic_finish (line #4):
147
<pre>
148
arch=`uname -p`
149
foreman=foreman
150
# We load the finish script into the logs directory so as to leave a record
151
./curl.$arch -s http://$foreman/unattended/finish > /a/var/sadm/system/logs/puppet.postinstall
152
</pre>
153
154
155
See [[Solaris_jumpstart_directory]] for more details
156 7 Oliver Weinmann
157 23 Oliver Weinmann
The files are read in the following order:
158
159
1. server:/jumpstart/rules.ok
160
2. server:/jumpstart/dynamic_profile
161
3. Foreman -> Provision template: Jumpstart Default
162
4. server:/jumpstart/dynamic_finish
163
5. Foreman -> Provision template: Jumpstart Default Finish
164
165 7 Oliver Weinmann
h3. Linux:
166
167 1 Romain Vrignaud
<pre>
168 16 Oliver Weinmann
cp -r /usr/share/foreman/extras/jumpstart /Solaris/jumpstart
169 7 Oliver Weinmann
vi /etc/exports
170 12 Oliver Weinmann
"/Solaris/jumpstart" *(ro,async,no_root_squash,anonuid=0)
171 7 Oliver Weinmann
</pre>
172
173 1 Romain Vrignaud
h3. Solaris:
174
<pre>
175 16 Oliver Weinmann
cp -r /usr/share/foreman/extras/jumpstart /Solaris/jumpstart
176 7 Oliver Weinmann
share -F nfs -o ro,anon=0 /jumpstart
177 13 Oliver Weinmann
echo "share -F nfs -o ro,anon=0 /jumpstart" >> /etc/dfs/dfstab
178 7 Oliver Weinmann
</pre>
179 1 Romain Vrignaud
180 5 Oliver Weinmann
h2. Edit Model
181
182
You need to setup a model for each Solaris Sparc host that you want to deploy.
183
184
<pre>
185
Name: Sun Ultra 10
186
Hardware Model: SUN4U
187
Vendor Class: Ultra-5_10
188
</pre>
189
190 1 Romain Vrignaud
h2. Model consolidation
191
192 5 Oliver Weinmann
When Foreman imports a host that has not been configured and built by Foreman it will attempt to determine the model of that machine by analyzing the facts that are associated with the host. This can often result in many badly named models all referring to what should be a single manufacturers model. A rake task has been provided that attempts to consolidate all these duplicate malformed names into a single sensible model together with the appropriate Solaris vendor class and Solaris hardware model. See [[models_consolidate|rake models::consolidate]]
193 25 David M.
194 26 Oliver Weinmann
h2. Starting deployment
195
196
After setting up a new host in foreman start your Intel Solaris machine and boot from PXE. On Sparc machines press STOP+a during bootup and enter the following:
197
198
boot net:dhcp - install
199
200 25 David M.
h1. Troubleshooting
201
202
h2. The installer doesnt load the jumpstart template
203
204
If you get an error about an empty jumpstart-template or something like "'<!DOCTYPE' invalid...", you have to fix your default_finish and default_profile scripts.
205
206
Remove this from default_profile:
207
<pre>
208
# and then download our configuration from foreman
209
foreman="foreman"
210
./curl.$arch -s http://$foreman/unattended/provision > ${SI_PROFILE}
211
</pre>
212
And add this instead:
213
<pre>
214
foreman="your.foreman.host:port"
215
ipaddress=`ifconfig -a | grep -v ether | grep -v zone | grep -v groupname | grep -v flags= | grep -v 0.0.0.0 | grep -v 127.0.0. | awk '{print $2}' | tail -1`
216
217
./curl.$arch -s http://$foreman/unattended/provision?spoof=$ipaddress > ${SI_PROFILE}
218
</pre>
219
220
Remove this from default_finish:
221
<pre>
222
foreman=foreman
223
# We load the finish script into the logs directory so as to leave a record
224
./curl.$arch -s http://$foreman/unattended/finish > /a/var/sadm/system/logs/puppet.postinstall
225
</pre>
226
and add this instead:
227
<pre>
228
foreman="your.foreman.host:port"
229
ipaddress=`ifconfig -a | grep -v ether | grep -v zone | grep -v groupname | grep -v flags= | grep -v 0.0.0.0 | grep -v 127.0.0. | awk '{print $2}' | tail -1`
230
231
./curl.$arch -s http://$foreman/unattended/finish?spoof=$ipaddress > /a/var/sadm/system/logs/puppet.postinstall
232
</pre>
233
234
Dont forget to replace the 'foreman="your.foreman.host:port'" with your foreman host.