Statistiques
| Révision :

root / trunk / shell / create-start-front-end @ 22

Historique | Voir | Annoter | Télécharger (5,58 ko)

1
#! /bin/bash -x
2
#
3
# ST - 2012-03-09
4
#
5
# Create and start the front end.
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
# Check that the front-end virtual machine does not already exist.
15
#
16
CURRENT_HOST_NAME=$FRONT_END_HOST_NAME
17
IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
18
if [ -n "$IS_RUNNING" ]
19
  then
20
    echo
21
    echo The \"$CURRENT_HOST_NAME\" domU already exists. Aborting!
22
    echo
23
    exit 1
24
fi
25

    
26
# Create the VM system disk.
27
lvcreate -L$FRONT_END_SYSTEM_DISK_SIZE \
28
         -n  $FRONT_END_SYSTEM_DISK \
29
         $FRONT_END_SYSTEM_VOLUME_GROUP
30
# Create a File System on the VM system disk.
31
mkfs -t $FRONT_END_SYSTEM_DISK_FILE_SYSTEM \
32
        $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK
33
# If necessary, create the swap volume for the front end.
34
if [ $FRONT_END_SWAP_DISK_SIZE != $CONST_NULL_DISK_SIZE ]; then
35
  lvcreate -L $FRONT_END_SWAP_DISK_SIZE \
36
           -n $FRONT_END_SWAP_DISK \
37
           $FRONT_END_SWAP_VOLUME_GROUP
38
  mkswap $FRONT_END_SWAP_VOLUME_GROUP_DEVICE/$FRONT_END_SWAP_DISK
39
fi
40
# Mount the system disk to copy all the specific files.
41
if [ ! -d $FRONT_END_SYSTEM_DISK_MOUNT_POINT ]; then
42
  mkdir $FRONT_END_SYSTEM_DISK_MOUNT_POINT
43
fi
44
mount $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK \
45
      $FRONT_END_SYSTEM_DISK_MOUNT_POINT
46
#
47
# Get the cluster MAC address
48
#
49
CURRENT_PATH=/etc
50
FRONT_END_CLUSTER_MAC_ADDRESS=\
51
`awk -F, -v INDEX=$FRONT_END_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME`
52
#
53
# Create the Xen configuration file from a template
54
#
55
CURRENT_PATH=/etc/xen
56
cp templates$CURRENT_PATH/front-end.cfg \
57
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
58
rpl Template Configuration $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
59
rpl __FRONT_END_KERNEL__ $COMPUTE_NODE_KERNEL \
60
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
61
rpl __FRONT_END_RAMDISK__ $COMPUTE_NODE_RAMDISK \
62
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
63
rpl __FRONT_END_MEMORY__ $COMPUTE_NODE_MEMORY \
64
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
65
rpl __FRONT_END_VCPUS_NUM__ $COMPUTE_NODE_VCPUS_NUM \
66
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
67
CPUS_LIST=$FRONT_END_CPUS_LIST
68
CPUS=""
69
for i in $CPUS_LIST
70
  do
71
    if [ "x$CPUS" == "x" ]
72
      then
73
        CPUS=$i
74
      else
75
        CPUS="$CPUS,$i"
76
    fi
77
done
78
rpl __FRONT_END_CPUS__ $CPUS \
79
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
80
rpl __FRONT_END_SYSTEM_DISK__ $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK \
81
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
82
rpl __FRONT_END_HOME_DISK__ $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK \
83
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
84
if [ "x$FRONT_END_SWAP_DISK_SIZE" != "x$CONST_NULL_DISK_SIZE" ] ; then
85
  FRONT_END_SWAP_DISK_STANZA="'phy:$FRONT_END_SWAP_VOLUME_GROUP_DEVICE/${FRONT_END_SWAP_DISK},xvda3,w',"
86
  rpl __FRONT_END_SWAP_DISK__ $FRONT_END_SWAP_DISK_STANZA \
87
     $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
88
  rpl __FRONT_END_NOSWAP__ "" \
89
     $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
90
else
91
  rpl __FRONT_END_NOSWAP__ $CLUSTER_NOSWAP \
92
     $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
93
fi
94
rpl __FRONT_END_HOST_NAME__ $CURRENT_HOST_NAME \
95
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
96

    
97
if [ $CLUSTER_EXTERNAL_ADDRESSES_BY_DHCP -eq 1 ] ;then
98
else
99
fi  
100
rpl __FRONT_END_IP_EXTERNAL__ $ADDRESS \
101
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
102
rpl __FRONT_END_IP_CLUSTER__ $ADDRESS \
103
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
104
rpl __FRONT_END_CLUSTER_MAC_ADDRESS__ $__FRONT_END_CLUSTER_MAC_ADDRESS__ \
105
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
106
rpl __FRONT_END_CLUSTER_MAC_ADDRESS__ $__FRONT_END_CLUSTER_MAC_ADDRESS__ \
107
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
108
rpl __CLUSTER_BRIDGE_NAME__ $CLUSTER_BRIDGE_NAME \
109
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
110

    
111
#
112
# Umount the compute node system disk
113
#
114
umount $COMPUTE_NODE_DISK_MOUNT_POINT
115
#
116
# Start the virtual machine
117
#
118
xm create $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
119
#
120
# Wait until the virtual machine has started
121
#
122
IS_RUNNING=""
123
while [ -z "$IS_RUNNING" ]
124
  do
125
    IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
126
    sleep 1
127
done
128
#
129
# Pin the VCPUs to "real" CPUs.
130
#
131
VCPU_NUM=0
132
for i in $CPUS_LIST
133
  do
134
    xm vcpu-pin $CURRENT_HOST_NAME $VCPU_NUM $i
135
    VCPU_NUM=$((VCPU_NUM + 1))
136
done
137

    
138
#
139
# Configure the specific files from templates
140
#
141
# /etc/network/interfaces
142
# The first interface is DHCP configured.
143
CURRENT_PATH=/etc/network
144
cp templates$CURRENT_PATH/$FRONT_END_INTERFACES_TEMPLATE \
145
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH
146
ADDRESS="$COMPUTE_NODE_STATIC_NETWORK_PREFIX.$FRONT_END_STATIC_NETWORK_POSTFIX"
147
rpl __STATIC_ADDRESS__ $ADDRESS  \
148
    $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH/interfaces
149
# /etc/hostname
150
CURRENT_PATH=/etc
151
echo $CURRENT_HOST_NAME > "${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/hostname"
152
# /etc/hosts
153
CURRENT_PATH=/etc
154
CURRENT_HOST_IP="${COMPUTE_NODE_STATIC_NETWORK_PREFIX}.${FRONT_END_STATIC_NETWORK_POSTFIX}"
155
cp templates$CURRENT_PATH/hosts \
156
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH
157
rpl __COMPUTE_NODE_IP__ $CURRENT_HOST_IP \
158
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
159
rpl __COMPUTE_NODE_NAME__ $CURRENT_HOST_NAME \
160
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
161
# /etc/resolv.conf
162
CURRENT_PATH=/etc
163
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
164
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
165
rpl __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
166
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
167
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.$FRONT_END_STATIC_NETWORK_POSTFIX" \
168
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
169
exit 0