Révision 29

trunk/shell/testawk (revision 29)
4 4
SCRIPT_PATH=`dirname $0`
5 5
. ./c-i-a-b.common
6 6
AWK_COMMAND="{if (FNR==$NODE_NUMBER) {print \$2}}"
7
awk -F, -v INDEX=$NODE_NUMBER  '{if (FNR==INDEX) {print $2}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME
7
awk -F, -v INDEX=$NODE_NUMBER  '{if (FNR==INDEX) {print $2}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$CONST_DHCP_HOSTS_FILE_BASENAME
trunk/shell/create-start-front-end (revision 29)
31 31
mkfs -t $FRONT_END_SYSTEM_DISK_FILE_SYSTEM \
32 32
        $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK
33 33
# If necessary, create the swap volume for the front end.
34
if [ $FRONT_END_SWAP_DISK_SIZE != $CONST_NULL_DISK_SIZE ]; then
34
if [ $FRONT_END_SWAP_DISK_SIZE != $CONST_NULL_DISK_SIZE ] ; then
35 35
  lvcreate -L $FRONT_END_SWAP_DISK_SIZE \
36 36
           -n $FRONT_END_SWAP_DISK \
37 37
           $FRONT_END_SWAP_VOLUME_GROUP
......
44 44
# Create a File System on the front-end system disk.
45 45
mkfs -t $FRONT_END_HOME_DISK_FILE_SYSTEM \
46 46
        $FRONT_END_HOME_VOLUME_GROUP_DEVICE/$FRONT_END_HOME_DISK
47
# Mount the system disk to copy all the specific files.
48
if [ ! -d $FRONT_END_SYSTEM_DISK_MOUNT_POINT ]; then
49
  mkdir $FRONT_END_SYSTEM_DISK_MOUNT_POINT
47
# Mount the system disk to install the system.
48
if [ ! -d $FRONT_END_FILE_SYSTEM_MOUNT_POINT ]; then
49
  mkdir $FRONT_END_FILE_SYSTEM_MOUNT_POINT
50 50
fi
51 51
mount $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK \
52
      $FRONT_END_SYSTEM_DISK_MOUNT_POINT
52
      $FRONT_END_FILE_SYSTEM_MOUNT_POINT
53
# Create the directory for the homes
54
if [ ! -d "$FRONT_END_FILE_SYSTEM_MOUNT_POINT/home" ]; then
55
  mkdir "$FRONT_END_FILE_SYSTEM_MOUNT_POINT/home"
56
fi
57
mount $FRONT_END_HOME_VOLUME_GROUP_DEVICE/$FRONT_END_HOME_DISK \
58
      "$FRONT_END_FILE_SYSTEM_MOUNT_POINT/home"
59

  
53 60
#
54 61
# Get the cluster MAC address
55 62
#
56 63
CURRENT_PATH=/etc
57 64
FRONT_END_CLUSTER_MAC_ADDRESS=\
58
`awk -F, -v INDEX=$FRONT_END_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME`
65
`awk -F, -v INDEX=$FRONT_END_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$CONST_DHCP_HOSTS_FILE_BASENAME`
59 66
#
60 67
# Create the Xen configuration file from a template
61 68
#
......
130 137
rpl __VIF_STANZA__ "$VIF_STANZA" \
131 138
   $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
132 139
#
140
# Install the system.
141
# 
142
echo deboostrap --arch `uname -m` stable $FRONT_END_FILE_SYSTEM_MOUNT_POINT
143
exit 0
133 144
#
145
#
134 146
# Configure the specific files from templates
135 147
#
136 148
# Create the /etc directory, if necessary
137
if [ ! -d $FRONT_END_SYSTEM_DISK_MOUNT_POINT/etc ] ; then
138
  mkdir $FRONT_END_SYSTEM_DISK_MOUNT_POINT/etc
149
if [ ! -d $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc ] ; then
150
  mkdir $FRONT_END_FILE_SYSTEM_MOUNT_POINT/etc
139 151
fi
140 152
# /etc/network/interfaces
141 153
# The first interface is DHCP configured.
142
# No '/' between $FRONT_END_SYSTEM_DISK_MOUNT_POINT and $CURRENT_PATH
154
# No '/' between $FRONT_END_FILE_SYSTEM_MOUNT_POINT and $CURRENT_PATH
143 155
CURRENT_PATH=/etc/network
144
if [ ! -d ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH} ] ; then
145
  mkdir ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}
156
if [ ! -d ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH} ] ; then
157
  mkdir ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}
146 158
fi
147 159
cp templates$CURRENT_PATH/$FRONT_END_INTERFACES_TEMPLATE \
148
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT$CURRENT_PATH/interfaces
160
   $FRONT_END_FILE_SYSTEM_MOUNT_POINT$CURRENT_PATH/interfaces
149 161
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ; then
150 162
  ETH0_STANZA="iface eth0 inet dhcp"
151 163
  rpl __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
152
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
164
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
153 165
  echo y | rpl __ETH0_STATIC_ADDRESS__ "" \
154
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
166
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
155 167
  echo y | rpl __ETH0_STATIC_NETMASK__ "" \
156
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
168
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
157 169
  echo y | rpl __ETH0_STATIC_NETWORK__ "" \
158
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
170
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
159 171
  echo y | rpl __ETH0_STATIC_GATEWAY__ "" \
160
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
172
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
161 173
  echo y | rpl __ETH0_STATIC_BROADCAST__ "" \
162
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
174
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
163 175
  echo y | rpl __ETH0_STATIC_NAMESERVERS__ "" \
164
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
176
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
165 177
  echo y | rpl __ETH0_STATIC_DNS_SEARCH__ "" \
166
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
178
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
167 179
else
168 180
  ETH0_STANZA="iface eth0 inet static"
169 181
  rpl __ETH0_STATIC_OR_DHCP__ "$ETH0_STANZA"  \
170
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
182
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
171 183
  echo y | rpl __ETH0_STATIC_ADDRESS__ "$FRONT_END_CLUSTER_STATIC_IP" \
172
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
184
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
173 185
  echo y | rpl __ETH0_STATIC_NETMASK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETMASK" \
174
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
186
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
175 187
  echo y | rpl __ETH0_STATIC_NETWORK__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_NETWORK" \
176
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
188
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
177 189
  echo y | rpl __ETH0_STATIC_GATEWAY__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_GATEWAY" \
178
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
190
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
179 191
  echo y | rpl __ETH0_STATIC_BROADCAST__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_BROADCAST" \
180
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
192
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
181 193
  echo y | rpl __ETH0_STATIC_NAMESERVERS__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_NAMESERVERS" \
182
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces 
194
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces 
183 195
  echo y | rpl __ETH0_STATIC_DNS_SEARCH__ "$FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_SEARCH" \
184
      ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
196
      ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
185 197
fi 
186 198
ADDRESS="$CLUSTER_STATIC_NETWORK_PREFIX.$FRONT_END_STATIC_NETWORK_POSTFIX"
187 199
rpl __ETH1_STATIC_ADDRESS__ $ADDRESS  \
188
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/interfaces
200
    ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/interfaces
189 201
# /etc/hostname
190 202
CURRENT_PATH=/etc
191 203
echo $CURRENT_HOST_NAME > "${FRONT_END_DISK_MOUNT_POINT}${CURRENT_PATH}/hostname"
192
# /etc/hosts
204
# /etc/hosts. Script generated.
193 205
CURRENT_PATH=/etc
194
CURRENT_HOST_IP="${CLUSTER_STATIC_NETWORK_PREFIX}.${FRONT_END_STATIC_NETWORK_POSTFIX}"
195
cp templates$CURRENT_PATH/hosts \
196
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}
197
rpl __COMPUTE_NODE_IP__ $CURRENT_HOST_IP \
198
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
199
rpl __COMPUTE_NODE_NAME__ $CURRENT_HOST_NAME \
200
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
206
$SCRIPT_PATH/generate-hosts-file \
207
  ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/hosts
201 208
# /etc/resolv.conf
202 209
CURRENT_PATH=/etc
203 210
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
204
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
211
   ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
205 212
rpl __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
206
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
207
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.$FRONT_END_STATIC_NETWORK_POSTFIX" \
208
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
209
exit 0
213
   ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
214
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX}" \
215
   ${FRONT_END_FILE_SYSTEM_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
210 216
#
211 217
# Umount the compute node system disk
212 218
#
213
umount $FRONT_END_SYSTEM_DISK_MOUNT_POINT
219
umount $FRONT_END_FILE_SYSTEM_MOUNT_POINT
214 220
#
215 221
# Start the virtual machine
216 222
#
trunk/shell/start-compute-node (revision 29)
90 90
#
91 91
CURRENT_PATH=/etc
92 92
COMPUTE_NODE_MAC_ADDRESS=\
93
`awk -F, -v INDEX=$NODE_NUMBER '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME`
93
`awk -F, -v INDEX=$NODE_NUMBER '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$CONST_DHCP_HOSTS_FILE_BASENAME`
94 94
#
95 95
# Create the Xen configuration file from a template
96 96
#
trunk/shell/c-i-a-b.common (revision 29)
2 2
# Constants that no one should not change.
3 3
# Compute nodes from 1 to 250
4 4
CONST_COMPUTE_NODE_MAX_NUM=250
5
CONST_COMPUTE_NODE_MODEL_CLUSTER_MODEL_STATIC_NETWORK_POSTFIX=252
5
CONST_COMPUTE_NODE_MODEL_CLUSTER_STATIC_NETWORK_POSTFIX=252
6
CONST_DHCP_HOSTS_FILE_BASENAME=dhcp-hostsfile
6 7
CONST_FRONT_END_TEMPLATE_NAME="front-end.cfg"
7 8
CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX=251
9
CONST_HOSTS_FILE_BASENAME=hosts
8 10
CONST_NULL_DISK_SIZE=0G # For several configuration files.
9 11
CONST_NO_DHCP="NO_DHCP"
10 12
#
......
58 60
COMPUTE_NODE_SWAP_DISK_SIZE=1G
59 61
SWAP_DISK_VOLUME_GROUP=/dev/vg_fast
60 62
#
61
DHCP_HOSTSFILE_BASENAME=dhcp-hostsfile
62 63
#
63 64
DOM0_CPUS_LIST="0 4"
64 65
DOM0_CPUS_NUM=2
......
72 73
FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_NAMESERVERS="140.77.1.32 140.77.167.2"
73 74
FRONT_END_EXTERNAL_INTERFACE_STATIC_DNS_SEARCH="lip.ens-lyon.fr ens-lyon.fr resam.ens-lyon.fr"
74 75
FRONT_END_EXTERNAL_MAC_ADDRESS="${CLUSTER_EXTERNAL_MAC_PREFIX}02"
76
FRONT_END_FILE_SYSTEM_MOUNT_POINT=/mnt/frontend-file-system
75 77
FRONT_END_HOME_DISK=front-end-home-disk
76 78
FRONT_END_HOME_DISK_FILE_SYSTEM=ext3
77 79
#FRONT_END_HOME_DISK_SIZE=512G
......
93 95
#FRONT_END_SYSTEM_DISK_SIZE=46G
94 96
FRONT_END_SYSTEM_DISK_SIZE=10G
95 97
FRONT_END_SYSTEM_DISK_FILE_SYSTEM=ext3
96
FRONT_END_SYSTEM_DISK_MOUNT_POINT=/mnt/frontend-system-disk
97 98
FRONT_END_SYSTEM_VOLUME_GROUP=vg_fast
98 99
FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE="/dev/$FRONT_END_SYSTEM_VOLUME_GROUP"
99 100
FRONT_END_VCPUS_NUM=3
trunk/shell/templates/etc/dhcp-hostsfile (revision 29)
249 249
00:16:3E:0F:6A:F9,id:*,192.168.1.249,compute-node-249
250 250
00:16:3E:0F:6A:FA,id:*,192.168.1.250,compute-node-250
251 251
00:16:3E:0F:6A:FB,id:*,192.168.1.251,tamadi-1-fe
252
00:16:3E:0F:6A:FC,id:*,192.168.1.252,tamadi-1-cnm
trunk/shell/templates/etc/hosts (revision 29)
249 249
192.168.1.248 compute-node-248.ciab.lip.ens-lyon.fr compute-node-248
250 250
192.168.1.249 compute-node-249.ciab.lip.ens-lyon.fr compute-node-249
251 251
192.168.1.250 compute-node-250.ciab.lip.ens-lyon.fr compute-node-250
252
192.168.1.251 frontend.ciab.lip.ens-lyon.fr frontend
253
192.168.1.252 compute-node-model.ciab.lip.ens-lyon.fr compute-node-model
252
192.168.1. .ciab.lip.ens-lyon.fr 
253
192.168.1. .ciab.lip.ens-lyon.fr 
254 254
# The following lines are desirable for IPv6 capable hosts
255 255
::1 ip6-localhost ip6-loopback
256 256
fe00::0 ip6-localnet
trunk/shell/generate-dhcp-hostsfile (revision 29)
10 10
# Source the common configuration variables.
11 11
. $SCRIPT_PATH/c-i-a-b.common
12 12
# Clean up the file
13
DHCP_HOSTSFILE="${SCRIPT_PATH}/${TEMPLATES_DIR}/etc/${DHCP_HOSTSFILE_BASENAME}"
13
DHCP_HOSTSFILE="${SCRIPT_PATH}/${TEMPLATES_DIR}/etc/${CONTS_DHCP_HOSTS_FILE_BASENAME}"
14 14
rm -f $DHCP_HOSTSFILE
15
# Compute the compute nodes file entries.
16
# Must start at 1 (0 is the network address).
15
# Compute the file entries.
17 16
for i in `seq 1 $COMPUTE_NODE_MAX_NUM`
18 17
  do
19 18
    NODE_NUMBER=$i
......
29 28
      do
30 29
        NODE_NUMBER_HEXA="0$NODE_NUMBER_HEXA"
31 30
    done
32
    MAC_ADDRESS="${CLUSTER_MAC_ADDRESS_PREFIX}:$NODE_NUMBER_HEXA"
31
    MAC_ADDRESS="${CLUSTER_MAC_ADDRESS_PREFIX}:${NODE_NUMBER_HEXA}"
33 32
    COMPUTE_NODE_NAME="${COMPUTE_NODE_NAME_PREFIX}${NODE_NUMBER_STRING}"
34
    echo "${MAC_ADDRESS},id:*,${CLUSTER_STATIC_NETWORK_PREFIX}.${NODE_NUMBER},${COMPUTE_NODE_NAME}" >> $DHCP_HOSTSFILE
33
    echo "${MAC_ADDRESS},id:*,${CLUSTER_STATIC_NETWORK_PREFIX}.${NODE_NUMBER},${COMPUTE_NODE_NAME}" >> $CONST_DHCP_HOSTS_FILE
34
    
35 35
done
36
# Create the entry for the front-end.
37
NODE_NUMBER_HEXA=`printf "%X" $FRONT_END_STATIC_NETWORK_POSTFIX`
36
# Front end stuff
37
NODE_NUMBER_HEXA=`printf "%X" $CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX`
38
MAC_ADDRESS="${CLUSTER_MAC_ADDRESS_PREFIX}:${NODE_NUMBER_HEXA}"
39
echo "${MAC_ADDRESS},id:*,${CLUSTER_STATIC_NETWORK_PREFIX}.$CONST_FRONT_END_CLUSTER_STATIC_NETWORK_POSTFIX,${FRONT_END_HOST_NAME}" >> $DHCP_HOSTSFILE
40
# Compute node model stuff
41
NODE_NUMBER_HEXA=`printf "%X" $CONST_COMPUTE_NODE_MODEL_CLUSTER_STATIC_NETWORK_POSTFIX`
38 42
MAC_ADDRESS="${CLUSTER_MAC_ADDRESS_PREFIX}:$NODE_NUMBER_HEXA"
39
echo "${MAC_ADDRESS},id:*,${CLUSTER_STATIC_NETWORK_PREFIX}.${FRONT_END_STATIC_NETWORK_POSTFIX},$FRONT_END_HOST_NAME" >> $DHCP_HOSTSFILE
43
echo "${MAC_ADDRESS},id:*,${CLUSTER_STATIC_NETWORK_PREFIX}.${CONST_COMPUTE_NODE_MODEL_CLUSTER_STATIC_NETWORK_POSTFIX},${COMPUTE_NODE_MODEL_HOST_NAME}" >> $DHCP_HOSTSFILE
40 44
echo
41 45
echo Copy the file to the front end!
42 46
echo

Formats disponibles : Unified diff