Statistiques
| Révision :

root / trunk / shell / front-end-finish-up @ 53

Historique | Voir | Annoter | Télécharger (10,45 ko)

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/${CONST_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 ${CONST_TEMPLATES_DIR}$CURRENT_PATH/$CONST_FRONT_END_XEN_TEMPLATE_NAME \
27
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
28
rpl -q Template Configuration $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
29
rpl -q __FRONT_END_KERNEL__ $FRONT_END_KERNEL \
30
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
31
rpl -q __FRONT_END_RAMDISK__ $FRONT_END_RAMDISK \
32
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
33
rpl -q __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 -q __FRONT_END_CPUS__ $CPUS \
47
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
48
# Memory
49
rpl -q __FRONT_END_MEMORY__ $FRONT_END_MEMORY \
50
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
51
# Root device
52
rpl -q __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 -q __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 -q __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 -q __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 -q __FRONT_END_NOSWAP__ "#$CLUSTER_NOSWAP" \
70
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
71
else
72
  rpl -q __FRONT_END_SWAP_DISK_STANZA__ "" \
73
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
74
  rpl -q __FRONT_END_NOSWAP__ $CLUSTER_NOSWAP \
75
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
76
fi
77
#
78
rpl -q __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 -q __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 -q __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 -q __VIF_STANZA__ "$VIF_STANZA" \
98
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
99
# Console stuff as extra parameter
100
rpl -q __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 ${CONST_TEMPLATES_DIR}$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 -q __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
146
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
147
  rpl -q __ETH0_STATIC_ADDRESS__ "" \
148
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
149
  rpl -q __ETH0_STATIC_NETMASK__ "" \
150
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
151
  rpl -q __ETH0_STATIC_NETWORK__ "" \
152
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
153
  rpl -q __ETH0_STATIC_GATEWAY__ "" \
154
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
155
  rpl -q __ETH0_STATIC_BROADCAST__ "" \
156
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
157
  rpl -q __ETH0_STATIC_NAMESERVERS__ "" \
158
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
159
  rpl -q __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 -q __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
164
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
165
  rpl -q __ETH0_STATIC_ADDRESS__ "$FRONT_END_CLUSTER_STATIC_IP" \
166
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
167
  rpl -q __ETH0_STATIC_NETMASK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETMASK" \
168
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
169
  rpl -q __ETH0_STATIC_NETWORK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETWORK" \
170
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
171
  rpl -q __ETH0_STATIC_GATEWAY__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_GATEWAY" \
172
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
173
  rpl -q __ETH0_STATIC_BROADCAST__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_BROADCAST" \
174
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
175
  rpl -q __ETH0_STATIC_NAMESERVERS__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_NAMESERVERS" \
176
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
177
  rpl-q __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 -q __ETH1_STATIC_ADDRESS__ $ADDRESS  \
183
    ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
184
rpl -q __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 ${CONST_TEMPLATES_DIR}$CURRENT_PATH/resolv.conf \
197
   ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
198
rpl -q __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
199
   ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
200
rpl -q __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 ${CONST_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 -q __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 -q __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 -q" since $FESDL can be an empty string.
226
rpl -q __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 ${CONST_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 -q __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 front-end 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