Statistiques
| Révision :

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

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

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