|
1 |
#! /bin/bash -x
|
|
2 |
#
|
|
3 |
# ST - 2012-05-25
|
|
4 |
#
|
|
5 |
# Finish up the front end installation.
|
|
6 |
#
|
|
7 |
# Get the directory of the script.
|
|
8 |
SCRIPT_PATH=`dirname $0`
|
|
9 |
# Get the script name.
|
|
10 |
SCRIPT_NAME=`basename $0`
|
|
11 |
# Source the common configuration variables.
|
|
12 |
. $SCRIPT_PATH/c-i-a-b.common
|
|
13 |
|
|
14 |
CURRENT_HOST_NAME=$FRONT_END_HOST_NAME
|
|
15 |
#
|
|
16 |
# Get the cluster MAC address
|
|
17 |
#
|
|
18 |
CURRENT_PATH=/etc
|
|
19 |
FRONT_END_CLUSTER_MAC_ADDRESS=\
|
|
20 |
`awk -F, -v INDEX=$CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$CONST_DHCP_HOSTS_FILE_BASENAME`
|
|
21 |
#
|
|
22 |
#
|
|
23 |
# Create the Xen configuration file from a template
|
|
24 |
#
|
|
25 |
CURRENT_PATH=/etc/xen
|
|
26 |
cp templates$CURRENT_PATH/$CONST_FRONT_END_XEN_TEMPLATE_NAME \
|
|
27 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
28 |
rpl Template Configuration $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
29 |
rpl __FRONT_END_KERNEL__ $COMPUTE_NODE_KERNEL \
|
|
30 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
31 |
rpl __FRONT_END_RAMDISK__ $FRONT_END_RAMDISK \
|
|
32 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
33 |
rpl __FRONT_END_VCPUS_NUM__ $FRONT_END_VCPUS_NUM \
|
|
34 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
35 |
CPUS_LIST=$FRONT_END_CPUS_LIST
|
|
36 |
CPUS=""
|
|
37 |
for i in $CPUS_LIST
|
|
38 |
do
|
|
39 |
if [ "x$CPUS" == "x" ]
|
|
40 |
then
|
|
41 |
CPUS=$i
|
|
42 |
else
|
|
43 |
CPUS="$CPUS,$i"
|
|
44 |
fi
|
|
45 |
done
|
|
46 |
rpl __FRONT_END_CPUS__ $CPUS \
|
|
47 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
48 |
# Memory
|
|
49 |
rpl __FRONT_END_MEMORY__ $FRONT_END_MEMORY \
|
|
50 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
51 |
# Root device
|
|
52 |
rpl __XEN_SYSTEM_DISK_ROOT_DEVICE_STANZA__ "$CONST_XEN_SYSTEM_DISK_ROOT_DEVICE_STANZA" \
|
|
53 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
54 |
#
|
|
55 |
# System disk stuff
|
|
56 |
FRONT_END_SYSTEM_DISK_STANZA="'phy:${FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE}/${FRONT_END_SYSTEM_DISK},$FRONT_END_SYSTEM_VIRTUAL_VOLUME,w'"
|
|
57 |
rpl __FRONT_END_SYSTEM_DISK_STANZA__ "$FRONT_END_SYSTEM_DISK_STANZA" \
|
|
58 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
59 |
# Home disk stuff
|
|
60 |
FRONT_END_HOME_DISK_STANZA="'phy:${FRONT_END_HOME_VOLUME_GROUP_DEVICE}/${FRONT_END_HOME_DISK},$FRONT_END_HOME_VIRTUAL_VOLUME,w'"
|
|
61 |
rpl __FRONT_END_HOME_DISK_STANZA__ "$FRONT_END_HOME_DISK_STANZA" \
|
|
62 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
63 |
# Swap disk stuff.
|
|
64 |
if [ "x$FRONT_END_SWAP_DISK_SIZE" != "x$CONST_NULL_DISK_SIZE" ] ; then
|
|
65 |
FRONT_END_SWAP_DISK_STANZA="'phy:${FRONT_END_SWAP_VOLUME_GROUP_DEVICE}/${FRONT_END_SWAP_DISK},$FRONT_END_SWAP_VIRTUAL_VOLUME,w'"
|
|
66 |
rpl __FRONT_END_SWAP_DISK_STANZA__ $FRONT_END_SWAP_DISK_STANZA \
|
|
67 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
68 |
# Comment out the noswap stanza.
|
|
69 |
rpl __FRONT_END_NOSWAP__ "#$CLUSTER_NOSWAP" \
|
|
70 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
71 |
else
|
|
72 |
echo y | rpl -f __FRONT_END_SWAP_DISK_STANZA__ "" \
|
|
73 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
74 |
rpl __FRONT_END_NOSWAP__ $CLUSTER_NOSWAP \
|
|
75 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
76 |
fi
|
|
77 |
#
|
|
78 |
rpl __FRONT_END_HOST_NAME__ $CURRENT_HOST_NAME \
|
|
79 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
80 |
# Vif stuff.
|
|
81 |
VIF_STANZA=$CONST_XEN_VIF_STANZA_PREFIX
|
|
82 |
EXTERNAL_MAC="${CONST_XEN_MAC_PREFIX}${FRONT_END_EXTERNAL_MAC_ADDRESS}"
|
|
83 |
INTERNAL_MAC="${CONST_XEN_MAC_PREFIX}${FRONT_END_CLUSTER_MAC_ADDRESS}"
|
|
84 |
INTERNAL_BRIDGE="${CONST_XEN_BRIDGE_PREFIX}${CLUSTER_BRIDGE_NAME}"
|
|
85 |
INTERNAL_IP="${CONST_XEN_IP_PREFIX}${FRONT_END_CLUSTER_STATIC_IP}"
|
|
86 |
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ;then
|
|
87 |
rpl __XEN_DHCP_STANZA__ "$CONST_XEN_DHCP_STANZA" \
|
|
88 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
89 |
VIF_STANZA=${VIF_STANZA}${EXTERNAL_MAC}"','"${INTERNAL_IP}","${INTERNAL_MAC}","${INTERNAL_BRIDGE}${CONST_XEN_VIF_STANZA_POSTFIX}
|
|
90 |
else
|
|
91 |
# Comment out the DHCP_STANZA.
|
|
92 |
rpl __XEN_DHCP_STANZA__ "#$CONST_XEN_DHCP_STANZA" \
|
|
93 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
94 |
VIF_STANZA=${VIF_STANZA}${EXTERNAL_IP}","${EXTERNAL_MAC}",'"${INTERNAL_IP}","${INTERNAL_MAC},${INTERNAL_BRIDGE}${CONST_XEN_VIF_STANZA_POSTFIX}
|
|
95 |
fi
|
|
96 |
# In any case, write the VIF_STANZA
|
|
97 |
rpl __VIF_STANZA__ "$VIF_STANZA" \
|
|
98 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
99 |
# Console stuff as extra parameter
|
|
100 |
rpl __EXTRA_STANZA__ "$CONST_XEN_EXTRA_STANZA" \
|
|
101 |
$CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
|
|
102 |
# End creation of Xen configuration file.
|
|
103 |
#
|
|
104 |
# Complet installation
|
|
105 |
#
|
|
106 |
# Modules stuff.
|
|
107 |
#
|
|
108 |
# Create the directory on the new image, if it does not exit yet.
|
|
109 |
if [ ! -d $FRONT_END_FILE_SYSTEM_MOUNT_POINT/lib/modules ] ; then
|
|
110 |
mkdir $FRONT_END_FILE_SYSTEM_MOUNT_POINT/lib/modules
|
|
111 |
fi
|
|
112 |
#
|
|
113 |
# Copy the modules
|
|
114 |
#
|
|
115 |
XEN_MODULES_DIRECTORY=`ls /lib/modules | grep xen `
|
|
116 |
for i in $XEN_MODULES_DIRECTORY ; do
|
|
117 |
cp -a /lib/modules/$i $FRONT_END_FILE_SYSTEM_MOUNT_POINT/lib/modules
|
|
118 |
done
|
|
119 |
#
|
|
120 |
# Module stuff done.
|
|
121 |
#
|
|
122 |
# Generate or configure the specific files from templates
|
|
123 |
#
|
|
124 |
# Create the /etc directory, if necessary
|
|
125 |
if [ ! -d $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc ] ; then
|
|
126 |
mkdir $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc
|
|
127 |
fi
|
|
128 |
# Copy the sources list
|
|
129 |
if [ ! -d $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc/apt ] ; then
|
|
130 |
mkdir $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc/apt
|
|
131 |
fi
|
|
132 |
cp /etc/apt/sources.list $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc/apt
|
|
133 |
|
|
134 |
# /etc/network/interfaces
|
|
135 |
# The first interface is DHCP configured.
|
|
136 |
# No '/' between $FRONT_END_FILE_SYSTEM_MOUNT_POINT and $CURRENT_PATH
|
|
137 |
CURRENT_PATH=/etc/network
|
|
138 |
if [ ! -d ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH} ] ; then
|
|
139 |
mkdir ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}
|
|
140 |
fi
|
|
141 |
cp templates$CURRENT_PATH/$FRONT_END_INTERFACES_TEMPLATE \
|
|
142 |
$FRONT_END_FILE_SYSTEM_MOUNT_POINT$CURRENT_PATH/interfaces
|
|
143 |
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ; then
|
|
144 |
ETH0_STANZA="iface eth0 inet dhcp"
|
|
145 |
rpl __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA" \
|
|
146 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
147 |
echo y | rpl __ETH0_STATIC_ADDRESS__ "" \
|
|
148 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
149 |
echo y | rpl __ETH0_STATIC_NETMASK__ "" \
|
|
150 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
151 |
echo y | rpl __ETH0_STATIC_NETWORK__ "" \
|
|
152 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
153 |
echo y | rpl __ETH0_STATIC_GATEWAY__ "" \
|
|
154 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
155 |
echo y | rpl __ETH0_STATIC_BROADCAST__ "" \
|
|
156 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
157 |
echo y | rpl __ETH0_STATIC_NAMESERVERS__ "" \
|
|
158 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
159 |
echo y | rpl __ETH0_STATIC_DNS_SEARCH__ "" \
|
|
160 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
161 |
else
|
|
162 |
ETH0_STANZA="iface eth0 inet static"
|
|
163 |
rpl __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA" \
|
|
164 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
165 |
echo y | rpl __ETH0_STATIC_ADDRESS__ "$FRONT_END_CLUSTER_STATIC_IP" \
|
|
166 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
167 |
echo y | rpl __ETH0_STATIC_NETMASK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETMASK" \
|
|
168 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
169 |
echo y | rpl __ETH0_STATIC_NETWORK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETWORK" \
|
|
170 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
171 |
echo y | rpl __ETH0_STATIC_GATEWAY__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_GATEWAY" \
|
|
172 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
173 |
echo y | rpl __ETH0_STATIC_BROADCAST__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_BROADCAST" \
|
|
174 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
175 |
echo y | rpl __ETH0_STATIC_NAMESERVERS__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_NAMESERVERS" \
|
|
176 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
177 |
echo y | rpl __ETH0_STATIC_DNS_SEARCH__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_SEARCH" \
|
|
178 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
179 |
fi
|
|
180 |
# Static address on the cluster interface.
|
|
181 |
ADDRESS="${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX}"
|
|
182 |
rpl __ETH1_STATIC_ADDRESS__ $ADDRESS \
|
|
183 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
184 |
rpl __ETH1_STATIC_NETMASK__ $CLUSTER_STATIC_NETMASK \
|
|
185 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
|
|
186 |
|
|
187 |
# /etc/hostname
|
|
188 |
CURRENT_PATH=/etc
|
|
189 |
echo $CURRENT_HOST_NAME > "${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/hostname"
|
|
190 |
# /etc/hosts. Script generated.
|
|
191 |
CURRENT_PATH=/etc
|
|
192 |
$SCRIPT_PATH/generate-hosts-file \
|
|
193 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/hosts
|
|
194 |
# /etc/resolv.conf
|
|
195 |
CURRENT_PATH=/etc
|
|
196 |
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
|
|
197 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
|
|
198 |
rpl __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
|
|
199 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
|
|
200 |
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX}" \
|
|
201 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
|
|
202 |
#
|
|
203 |
# /etc/fstab
|
|
204 |
#
|
|
205 |
CURRENT_PATH=/etc
|
|
206 |
cp ${TEMPLATES_DIR}${CURRENT_PATH}/${FRONT_END_FSTAB_TEMPLATE} \
|
|
207 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
|
|
208 |
# Front-End System Disk Line
|
|
209 |
FESDL=${FRONT_END_SYSTEM_VIRTUAL_VOLUME_DEVICE}
|
|
210 |
FESDL="$FESDL / $FRONT_END_SYSTEM_DISK_FILE_SYSTEM errors=remount-ro 0 1"
|
|
211 |
rpl __FRONT_END_SYSTEM_DISK_LINE__ "$FESDL" \
|
|
212 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
|
|
213 |
# Font-End Home Disk Line
|
|
214 |
FEHDL=${FRONT_END_HOME_VIRTUAL_VOLUME_DEVICE}
|
|
215 |
FEHDL="$FEHDL /home $FRONT_END_HOME_DISK_FILE_SYSTEM errors=remount-ro 0 2"
|
|
216 |
rpl __FRONT_END_HOME_DISK_LINE__ "$FEHDL" \
|
|
217 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
|
|
218 |
# Font-End Swap Disk Line
|
|
219 |
if [ "x$FRONT_END_SWAP_DISK_SIZE" != "x$CONST_NULL_DISK_SIZE" ] ; then
|
|
220 |
FESDL=${FRONT_END_SWAP_VIRTUAL_VOLUME_DEVICE}
|
|
221 |
FESDL="$FESDL none swap 0 0"
|
|
222 |
else
|
|
223 |
FESDL=""
|
|
224 |
fi
|
|
225 |
# "rpl -f" since $FESDL can be an empty string.
|
|
226 |
rpl -f __FRONT_END_SWAP_DISK_LINE__ "$FESDL" \
|
|
227 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
|
|
228 |
#
|
|
229 |
# End /etc/fstab stuff.
|
|
230 |
#
|
|
231 |
# /etc/inittab stuff
|
|
232 |
#
|
|
233 |
rpl tty1 "$CONST_XEN_VIRTUAL_CONSOLE_NAME" \
|
|
234 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/inittab
|
|
235 |
#
|
|
236 |
# End /etc/inittab stuff.
|
|
237 |
#
|
|
238 |
# NFS V4 stuff
|
|
239 |
#
|
|
240 |
cp ${TEMPLATES_DIR}${CURRENT_PATH}/${FRONT_END_EXPORTS_TEMPLATE} \
|
|
241 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/$CONST_EXPORTS_FILE_BASENAME
|
|
242 |
NFS_HOME_STANZA="$CLUSTER_STATIC_NETWORK_PREFIX.0/${CLUSTER_STATIC_NETMASK}$FRONT_END_NFS_OPTIONS"
|
|
243 |
rpl __NFS_HOME_STANZA__ "$NFS_HOME_STANZA" \
|
|
244 |
${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/$CONST_EXPORTS_FILE_BASENAME
|
|
245 |
#
|
|
246 |
# End NFS V4 stuff.
|
|
247 |
#
|
|
248 |
# Umount the compute node system disk
|
|
249 |
#
|
|
250 |
# Order matters since the /home file system is mounted on the
|
|
251 |
# on the system partition
|
|
252 |
umount $FRONT_END_FILE_SYSTEM_MOUNT_POINT/home
|
|
253 |
umount $FRONT_END_FILE_SYSTEM_MOUNT_POINT
|
|
254 |
#
|
|
255 |
exit 0
|
0 |
256 |
|