Statistiques
| Révision :

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

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

1 17 storres
#! /bin/bash -x
2 16 storres
#
3 17 storres
# ST - 2012-03-09
4 17 storres
#
5 16 storres
# Create and start the front end.
6 16 storres
#
7 16 storres
# Get the directory of the script.
8 16 storres
SCRIPT_PATH=`dirname $0`
9 16 storres
# Get the script name.
10 16 storres
SCRIPT_NAME=`basename $0`
11 16 storres
# Source the common configuration variables.
12 16 storres
. $SCRIPT_PATH/c-i-a-b.common
13 16 storres
#
14 16 storres
# Check that the front-end virtual machine does not already exist.
15 16 storres
#
16 20 storres
CURRENT_HOST_NAME=$FRONT_END_HOST_NAME
17 16 storres
IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
18 16 storres
if [ -n "$IS_RUNNING" ]
19 16 storres
  then
20 16 storres
    echo
21 16 storres
    echo The \"$CURRENT_HOST_NAME\" domU already exists. Aborting!
22 16 storres
    echo
23 16 storres
    exit 1
24 16 storres
fi
25 16 storres
26 16 storres
# Create the VM system disk.
27 17 storres
lvcreate -L$FRONT_END_SYSTEM_DISK_SIZE \
28 16 storres
         -n  $FRONT_END_SYSTEM_DISK \
29 17 storres
         $FRONT_END_SYSTEM_VOLUME_GROUP
30 16 storres
# Create a File System on the VM system disk.
31 16 storres
mkfs -t $FRONT_END_SYSTEM_DISK_FILE_SYSTEM \
32 17 storres
        $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK
33 16 storres
# If necessary, create the swap volume for the front end.
34 16 storres
if [ $FRONT_END_SWAP_DISK_SIZE != $CONST_NULL_DISK_SIZE ]; then
35 16 storres
  lvcreate -L $FRONT_END_SWAP_DISK_SIZE \
36 16 storres
           -n $FRONT_END_SWAP_DISK \
37 17 storres
           $FRONT_END_SWAP_VOLUME_GROUP
38 17 storres
  mkswap $FRONT_END_SWAP_VOLUME_GROUP_DEVICE/$FRONT_END_SWAP_DISK
39 16 storres
fi
40 16 storres
# Mount the system disk to copy all the specific files.
41 16 storres
if [ ! -d $FRONT_END_SYSTEM_DISK_MOUNT_POINT ]; then
42 16 storres
  mkdir $FRONT_END_SYSTEM_DISK_MOUNT_POINT
43 16 storres
fi
44 17 storres
mount $FRONT_END_SYSTEM_VOLUME_GROUP_DEVICE/$FRONT_END_SYSTEM_DISK \
45 16 storres
      $FRONT_END_SYSTEM_DISK_MOUNT_POINT
46 16 storres
#
47 16 storres
# Get the MAC address
48 16 storres
#
49 16 storres
CURRENT_PATH=/etc
50 20 storres
FRONT_END_MAC_ADDRESS=\
51 20 storres
`awk -F, -v INDEX=$FRONT_END_STATIC_NETWORK_POSTFIX '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME`
52 16 storres
#
53 16 storres
# Create the Xen configuration file from a template
54 16 storres
#
55 16 storres
CURRENT_PATH=/etc/xen
56 20 storres
cp templates$CURRENT_PATH/front-end.cfg \
57 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
58 16 storres
rpl Template Configuration $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
59 16 storres
rpl "the Xen instance compute-node" "compute-node-$NODE_NUMBER_STRING" \
60 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
61 16 storres
rpl __COMPUTE_NODE_KERNEL__ $COMPUTE_NODE_KERNEL \
62 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
63 16 storres
rpl __COMPUTE_NODE_RAMDISK__ $COMPUTE_NODE_RAMDISK \
64 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
65 16 storres
rpl __COMPUTE_NODE_MEMORY__ $COMPUTE_NODE_MEMORY \
66 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
67 16 storres
rpl __COMPUTE_NODE_VCPUS__ $COMPUTE_NODE_VCPUS \
68 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
69 16 storres
CPUS_LIST=`sed -n ${NODE_NUMBER},${NODE_NUMBER}p $SCRIPT_PATH/$COMPUTE_NODE_CPUS_FILE`
70 16 storres
CPUS=""
71 16 storres
for i in $CPUS_LIST
72 16 storres
  do
73 16 storres
    if [ "x$CPUS" == "x" ]
74 16 storres
      then
75 16 storres
        CPUS=$i
76 16 storres
      else
77 16 storres
        CPUS="$CPUS,$i"
78 16 storres
    fi
79 16 storres
done
80 16 storres
rpl __COMPUTE_NODE_CPUS__ $CPUS \
81 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
82 16 storres
rpl __COMPUTE_NODE_SYSTEM_DISK__ $SYSTEM_DISK_LOGICAL_VOLUME/$COMPUTE_NODE_SYSTEM_DISK \
83 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
84 16 storres
rpl __COMPUTE_NODE_SWAP_DISK__ $SYSTEM_DISK_LOGICAL_VOLUME/$COMPUTE_NODE_SWAP_DISK \
85 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
86 16 storres
rpl __COMPUTE_NODE_HOST_NAME__ $CURRENT_HOST_NAME \
87 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
88 16 storres
rpl __COMPUTE_NODE_IP__ $ADDRESS \
89 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
90 16 storres
rpl __COMPUTE_NODE_MAC__ $COMPUTE_NODE_MAC_ADDRESS \
91 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
92 16 storres
rpl __COMPUTE_NODE_BRIDGE__ $COMPUTE_NODE_BRIDGE \
93 16 storres
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
94 16 storres
95 16 storres
#
96 16 storres
# Umount the compute node system disk
97 16 storres
#
98 16 storres
umount $COMPUTE_NODE_DISK_MOUNT_POINT
99 16 storres
#
100 16 storres
# Start the virtual machine
101 16 storres
#
102 16 storres
xm create $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
103 16 storres
#
104 16 storres
# Wait until the virtual machine has started
105 16 storres
#
106 16 storres
IS_RUNNING=""
107 16 storres
while [ -z "$IS_RUNNING" ]
108 16 storres
  do
109 16 storres
    IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
110 16 storres
    sleep 1
111 16 storres
done
112 16 storres
#
113 16 storres
# Pin the VCPUs to "real" CPUs.
114 16 storres
#
115 16 storres
VCPU_NUM=0
116 16 storres
for i in $CPUS_LIST
117 16 storres
  do
118 16 storres
    xm vcpu-pin $CURRENT_HOST_NAME $VCPU_NUM $i
119 16 storres
    VCPU_NUM=$((VCPU_NUM + 1))
120 17 storres
done
121 20 storres
122 20 storres
#
123 20 storres
# Configure the specific files from templates
124 20 storres
#
125 20 storres
# /etc/network/interfaces
126 20 storres
# The first interface is DHCP configured.
127 20 storres
CURRENT_PATH=/etc/network
128 20 storres
cp templates$CURRENT_PATH/$FRONT_END_INTERFACES_TEMPLATE \
129 20 storres
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH
130 20 storres
ADDRESS="$COMPUTE_NODE_STATIC_NETWORK_PREFIX.$FRONT_END_STATIC_NETWORK_POSTFIX"
131 20 storres
rpl __STATIC_ADDRESS__ $ADDRESS  \
132 20 storres
    $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH/interfaces
133 20 storres
# /etc/hostname
134 20 storres
CURRENT_PATH=/etc
135 20 storres
echo $CURRENT_HOST_NAME > "${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/hostname"
136 20 storres
# /etc/hosts
137 20 storres
CURRENT_PATH=/etc
138 20 storres
CURRENT_HOST_IP="${COMPUTE_NODE_STATIC_NETWORK_PREFIX}.${FRONT_END_STATIC_NETWORK_POSTFIX}"
139 20 storres
cp templates$CURRENT_PATH/hosts \
140 20 storres
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH
141 20 storres
rpl __COMPUTE_NODE_IP__ $CURRENT_HOST_IP \
142 20 storres
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
143 20 storres
rpl __COMPUTE_NODE_NAME__ $CURRENT_HOST_NAME \
144 20 storres
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
145 20 storres
# /etc/resolv.conf
146 20 storres
CURRENT_PATH=/etc
147 20 storres
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
148 20 storres
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
149 20 storres
rpl __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
150 20 storres
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
151 20 storres
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.$FRONT_END_STATIC_NETWORK_POSTFIX" \
152 20 storres
   ${FRONT_END_SYSTEM_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
153 20 storres
exit 0