Statistiques
| Révision :

root / trunk / shell / compute-node-model-finish-up @ 49

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

1
#! /bin/bash -x
2
#
3
# ST - 2012-05-25
4
#
5
# Finish up the compute node model installation.
6
# Prerequisite: the system must be mounted.
7
#
8
# Get the directory of the script.
9
SCRIPT_PATH=`dirname $0`
10
# Get the script name.
11
SCRIPT_NAME=`basename $0`
12
# Source the common configuration variables.
13
. $SCRIPT_PATH/c-i-a-b.common
14

    
15
CURRENT_HOST_NAME=$COMPUTE_NODE_MODEL_HOST_NAME
16
#
17
# Get the cluster MAC address
18
#
19
CURRENT_PATH=/etc
20
COMPUTE_NODE_MODEL_CLUSTER_MAC_ADDRESS=\
21
`awk -F, -v INDEX=$CONST_COMPUTE_NODE_MODEL_CLUSTER_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$CONST_DHCP_HOSTS_FILE_BASENAME`
22
#
23
#
24
# Create the Xen configuration file from a template
25
#
26
CURRENT_PATH=/etc/xen
27
cp templates$CURRENT_PATH/$CONST_COMPUTE_NODE_MODEL_XEN_TEMPLATE_NAME \
28
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
29
rpl -q Template Configuration $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
30
rpl -q __COMPUTE_NODE_KERNEL__ "$COMPUTE_NODE_KERNEL" \
31
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
32
rpl -q __COMPUTE_NODE_RAMDISK__ "$COMPUTE_NODE_RAMDISK" \
33
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
34
rpl -q __COMPUTE_NODE_MODEL_VCPUS_NUM__ "$COMPUTE_NODE_MODEL_VCPUS_NUM" \
35
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
36
CPUS_LIST=$COMPUTE_NODE_MODEL_CPUS_LIST
37
CPUS=""
38
for i in $CPUS_LIST
39
  do
40
    if [ "x$CPUS" == "x" ]
41
      then
42
        CPUS=$i
43
      else
44
        CPUS="$CPUS,$i"
45
    fi
46
done
47
rpl -q __COMPUTE_NODE_MODEL_CPUS__ "$CPUS" \
48
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
49
# Memory
50
rpl -q __COMPUTE_NODE_MEMORY__ "$COMPUTE_NODE_MEMORY" \
51
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
52
# Root device
53
rpl -q __XEN_SYSTEM_DISK_ROOT_DEVICE_STANZA__ "$CONST_XEN_SYSTEM_DISK_ROOT_DEVICE_STANZA" \
54
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
55
#
56
# System disk stuff
57
COMPUTE_NODE_MODEL_SYSTEM_DISK_STANZA="'phy:${COMPUTE_NODE_MODEL_SYSTEM_VOLUME_GROUP_DEVICE}/${COMPUTE_NODE_MODEL_SYSTEM_DISK},$COMPUTE_NODE_SYSTEM_VIRTUAL_VOLUME,w'"
58
rpl -q __COMPUTE_NODE_MODEL_SYSTEM_DISK_STANZA__ "$COMPUTE_NODE_MODEL_SYSTEM_DISK_STANZA" \
59
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
60
# No home disk stuff: home is network mounted.
61
#
62
# Swap disk stuff.
63
if [ "x$COMPUTE_NODE_MODEL_SWAP_DISK_SIZE" != "x$CONST_NULL_DISK_SIZE" ] ; then
64
  COMPUTE_NODE_MODEL_SWAP_DISK_STANZA="'phy:${COMPUTE_NODE_SWAP_DISK_VOLUME_GROUP_DEVICE}/${COMPUTE_NODE_MODEL_SWAP_DISK},$COMPUTE_NODE_SWAP_VIRTUAL_VOLUME,w'"
65
  rpl -q __COMPUTE_NODE_MODEL_SWAP_DISK_STANZA__ "$COMPUTE_NODE_MODEL_SWAP_DISK_STANZA" \
66
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
67
  # Comment out the noswap stanza.
68
  rpl -q __COMPUTE_NODE_MODEL_NOSWAP__ "#$CLUSTER_NOSWAP" \
69
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
70
else
71
  rpl -q __COMPUTE_NODE_MODEL_SWAP_DISK_STANZA__ "" \
72
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
73
  rpl -q __COMPUTE_NODE_MODEL_NOSWAP__ "$CLUSTER_NOSWAP" \
74
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
75
fi
76
#
77
rpl -q __COMPUTE_NODE_MODEL_HOST_NAME__ "$CURRENT_HOST_NAME" \
78
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
79
# Vif stuff.
80
VIF_STANZA=$CONST_XEN_VIF_STANZA_PREFIX
81
EXTERNAL_MAC="${CONST_XEN_MAC_PREFIX}${COMPUTE_NODE_MODEL_EXTERNAL_MAC_ADDRESS}"
82
INTERNAL_MAC="${CONST_XEN_MAC_PREFIX}${COMPUTE_NODE_MODEL_CLUSTER_MAC_ADDRESS}"
83
INTERNAL_BRIDGE="${CONST_XEN_BRIDGE_PREFIX}${CLUSTER_BRIDGE_NAME}"
84
INTERNAL_IP="${CONST_XEN_IP_PREFIX}${COMPUTE_NODE_MODEL_CLUSTER_STATIC_IP}"
85
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ; then
86
  rpl -q __XEN_DHCP_STANZA__ "$CONST_XEN_DHCP_STANZA" \
87
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
88
  VIF_STANZA=${VIF_STANZA}${EXTERNAL_MAC}"','"${INTERNAL_IP}","${INTERNAL_MAC}","${INTERNAL_BRIDGE}${CONST_XEN_VIF_STANZA_POSTFIX}
89
else
90
  # Comment out the DHCP_STANZA.
91
  rpl -q __XEN_DHCP_STANZA__ "#$CONST_XEN_DHCP_STANZA" \
92
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
93
  VIF_STANZA=${VIF_STANZA}${EXTERNAL_IP}","${EXTERNAL_MAC}",'"${INTERNAL_IP}","${INTERNAL_MAC},${INTERNAL_BRIDGE}${CONST_XEN_VIF_STANZA_POSTFIX}
94
fi
95
# In any case, write the VIF_STANZA
96
rpl -q __VIF_STANZA__ "$VIF_STANZA" \
97
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
98
# Console stuff as extra parameter
99
rpl -q __EXTRA_STANZA__ "$CONST_XEN_EXTRA_STANZA" \
100
     $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
101
# End creation of Xen configuration file.
102
#
103
# Complete installation
104
#
105
# Modules stuff.
106
#
107
#  Create the directory on the new image, if it does not exit yet.
108
if [ ! -d $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/lib/modules ] ; then
109
  mkdir $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/lib/modules
110
fi
111
#
112
#  Copy the modules
113
#
114
XEN_MODULES_DIRECTORY=`ls /lib/modules | grep xen `
115
for i in $XEN_MODULES_DIRECTORY ; do
116
  cp -a /lib/modules/$i $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/lib/modules
117
done
118
#
119
# Module stuff done.
120
#
121
# Generate or configure the specific files from templates
122
#
123
# Create the /etc directory, if necessary
124
if [ ! -d $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/etc ] ; then
125
  mkdir $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/etc
126
fi
127
#
128
# Copy the sources list
129
#
130
if [ ! -d $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/etc/apt ] ; then
131
  mkdir $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/etc/apt
132
fi
133
cp /etc/apt/sources.list $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT/etc/apt
134

    
135
# /etc/network/interfaces
136
# The first interface is DHCP configured.
137
# No '/' between $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT and $CURRENT_PATH
138
CURRENT_PATH=/etc/network
139
if [ ! -d ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH} ] ; then
140
  mkdir ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}
141
fi
142
cp templates$CURRENT_PATH/$COMPUTE_NODE_MODEL_INTERFACES_TEMPLATE \
143
   $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT$CURRENT_PATH/interfaces
144
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ; then
145
  ETH0_STANZA="iface eth0 inet dhcp"
146
  rpl -q __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
147
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
148
  rpl -q __ETH0_STATIC_ADDRESS__ "" \
149
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
150
  rpl -q __ETH0_STATIC_NETMASK__ "" \
151
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
152
  rpl -q __ETH0_STATIC_NETWORK__ "" \
153
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
154
  rpl -q __ETH0_STATIC_GATEWAY__ "" \
155
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
156
  rpl -q __ETH0_STATIC_BROADCAST__ "" \
157
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
158
  rpl -q __ETH0_STATIC_NAMESERVERS__ "" \
159
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
160
  rpl -q __ETH0_STATIC_DNS_SEARCH__ "" \
161
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
162
else
163
  ETH0_STANZA="iface eth0 inet static"
164
  rpl -q __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
165
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
166
  rpl -q __ETH0_STATIC_ADDRESS__ "$COMPUTE_NODE_MODEL_CLUSTER_STATIC_IP" \
167
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
168
  rpl -q __ETH0_STATIC_NETMASK__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_NETMASK" \
169
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
170
  rpl -q __ETH0_STATIC_NETWORK__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_NETWORK" \
171
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
172
  rpl -q __ETH0_STATIC_GATEWAY__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_GATEWAY" \
173
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
174
  rpl -q __ETH0_STATIC_BROADCAST__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_BROADCAST" \
175
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
176
  rpl -q __ETH0_STATIC_NAMESERVERS__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_DNS_NAMESERVERS" \
177
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
178
  rpl -q __ETH0_STATIC_DNS_SEARCH__ "$COMPUTE_NODE_MODEL_EXTERNAL_INTERFACE_STATIC_DNS_SEARCH" \
179
      ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
180
fi 
181
# Static address on the cluster interface.
182
ADDRESS="${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_COMPUTE_NODE_MODEL_CLUSTER_STATIC_NETWORK_POSTFIX}"
183
rpl -q __ETH1_STATIC_ADDRESS__ "$ADDRESS"  \
184
    ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
185
rpl -q __ETH1_STATIC_NETMASK__ "$CLUSTER_STATIC_NETMASK"  \
186
    ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
187
    
188
# /etc/hostname
189
CURRENT_PATH=/etc
190
echo $COMPUTE_NODE_MODEL_CLUSTER_HOST_NAME > "${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/hostname"
191
# /etc/hosts. Script generated.
192
CURRENT_PATH=/etc
193
$SCRIPT_PATH/generate-hosts-file \
194
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/hosts
195
# /etc/resolv.conf
196
CURRENT_PATH=/etc
197
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
198
   ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
199
rpl -q __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
200
   ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
201
rpl -q __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX}" \
202
   ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
203
#
204
# /etc/fstab
205
#
206
CURRENT_PATH=/etc
207
cp ${TEMPLATES_DIR}${CURRENT_PATH}/${COMPUTE_NODE_FSTAB_TEMPLATE} \
208
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
209
  # Compute-Node-Model System Disk Line
210
CNMSDL=${COMPUTE_NODE_MODEL_SYSTEM_VIRTUAL_VOLUME_DEVICE}
211
CNMSDL="$CNMSDL	/		$COMPUTE_NODE_SYSTEM_DISK_FILE_SYSTEM	errors=remount-ro	0	1"
212
rpl -q __COMPUTE_NODE_SYSTEM_DISK_LINE__ "$CNMSDL" \
213
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
214
  # Compute-Node-Model Home Disk Line. Computer nodes mount the /home
215
  # on the front-end.
216
CNMHDL="${FRONT_END_CLUSTER_HOST_NAME}:/"
217
CNMHDL="$CNMHDL	/home		$COMPUTE_NODE_HOME_DISK_FILE_SYSTEM	defaults		0	0"
218
rpl -q __COMPUTE_NODE_HOME_DISK_LINE__ "$CNMHDL" \
219
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
220
  # Compute-Node-Model Swap Disk Line
221
if [ "x$COMPUTE_NODE_MODEL_SWAP_DISK_SIZE" != "x$CONST_NULL_DISK_SIZE" ] ; then
222
  CNMSDL=${COMPUTE_NODE_MODEL_SWAP_VIRTUAL_VOLUME_DEVICE}
223
  CNMSDL="$CNMSDL	none		swap				0	0"
224
else
225
  CNMSDL=""
226
fi
227
# "rpl -q" since $CNMSDL can be an empty string.
228
rpl -q __COMPUTE_NODE_SWAP_DISK_LINE__ "$CNMSDL" \
229
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/fstab
230
#
231
# End /etc/fstab stuff.
232
#
233
# /etc/inittab stuff
234
#
235
rpl -q tty1 "$CONST_XEN_VIRTUAL_CONSOLE_NAME" \
236
  ${COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/inittab
237
#
238
# End /etc/inittab stuff.
239
#
240
# Umount the compute node model system disk
241
#
242
umount $COMPUTE_NODE_MODEL_FILE_SYSTEM_MOUNT_POINT
243
#
244
exit 0