mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
100 lines
4.0 KiB
Bash
Executable File
100 lines
4.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
usage() {
|
|
printf " %s <alias_count:ip:netmask;alias_count2:ip2:netmask2;....> \n" $(basename $0) >&2
|
|
}
|
|
source /root/func.sh
|
|
|
|
lock="biglock"
|
|
locked=$(getLockFile $lock)
|
|
if [ "$locked" != "1" ]
|
|
then
|
|
exit 1
|
|
fi
|
|
|
|
PORTS_CONF=/etc/apache2/ports.conf
|
|
PORTS_CONF_BAK=/etc/ports.conf.bak
|
|
FAIL_DIR=/etc/failure_config
|
|
CMDLINE=$(cat /var/cache/cloud/cmdline | tr '\n' ' ')
|
|
|
|
if [ ! -d "$FAIL_DIR" ]
|
|
then
|
|
mkdir "$FAIL_DIR"
|
|
fi
|
|
#bakup ports.conf
|
|
cp "$PORTS_CONF" "$PORTS_CONF_BAK"
|
|
|
|
domain=$(echo "$CMDLINE" | grep -o " domain=.* " | sed -e 's/domain=//' | awk '{print $1}')
|
|
|
|
setup_apache2() {
|
|
local ip=$1
|
|
logger -t cloud "Setting up apache web server for $ip"
|
|
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ipAlias.${ip}.meta-data
|
|
cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/ipAlias.${ip}-ssl.meta-data
|
|
cp /etc/apache2/ports.conf /etc/apache2/conf.d/ports.${ip}.meta-data.conf
|
|
sed -i -e "s/<VirtualHost.*>/<VirtualHost $ip:80>\nServerName $domain/" /etc/apache2/sites-available/ipAlias.${ip}.meta-data
|
|
sed -i -e "s/<VirtualHost.*>/<VirtualHost $ip:443>\nServerName $domain/" /etc/apache2/sites-available/ipAlias.${ip}-ssl.meta-data
|
|
sed -i -e "/NameVirtualHost .*:80/d" /etc/apache2/conf.d/ports.${ip}.meta-data.conf
|
|
sed -i -e "s/Listen .*:80/Listen $ip:80/g" /etc/apache2/conf.d/ports.${ip}.meta-data.conf
|
|
sed -i -e "s/Listen .*:443/Listen $ip:443/g" /etc/apache2/conf.d/ports.${ip}.meta-data.conf
|
|
ln -s /etc/apache2/sites-available/ipAlias.${ip}.meta-data /etc/apache2/sites-enabled/ipAlias.${ip}.meta-data
|
|
ln -s /etc/apache2/sites-available/ipAlias.${ip}-ssl.meta-data /etc/apache2/sites-enabled/ipAlias.${ip}-ssl.meta-data
|
|
}
|
|
|
|
var="$1"
|
|
cert="/root/.ssh/id_rsa.cloud"
|
|
config_ips=""
|
|
|
|
while [ -n "$var" ]
|
|
do
|
|
var1=$(echo $var | cut -f1 -d "-")
|
|
alias_count=$( echo $var1 | cut -f1 -d ":" )
|
|
routerip=$(echo $var1 | cut -f2 -d ":")
|
|
netmask=$(echo $var1 | cut -f3 -d ":")
|
|
ifconfig eth0:$alias_count $routerip netmask $netmask up
|
|
setup_apache2 "$routerip"
|
|
config_ips="${config_ips}"$routerip":"
|
|
var=$( echo $var | sed "s/${var1}-//" )
|
|
done
|
|
|
|
#restarting the apache server for the config to take effect.
|
|
service apache2 restart
|
|
result=$?
|
|
if [ "$result" -ne "0" ]
|
|
then
|
|
logger -t cloud "createIpAlias.sh: could not configure apache2 server"
|
|
logger -t cloud "createIpAlias.sh: reverting to the old config"
|
|
logger -t cloud "createIpAlias.sh: moving out the failure config to $FAIL_DIR"
|
|
while [ -n "$config_ips" ]
|
|
do
|
|
ip=$( echo $config_ips | cut -f1 -d ":" )
|
|
mv "/etc/apache2/sites-available/ipAlias.${ip}.meta-data" "$FAIL_DIR/ipAlias.${ip}.meta-data"
|
|
mv "/etc/apache2/sites-available/ipAlias.${ip}-ssl.meta-data" "$FAIL_DIR/ipAlias.${ip}-ssl.meta-data"
|
|
mv "/etc/apache2/conf.d/ports.${ip}.meta-data.conf" "$FAIL_DIR/ports.${ip}.meta-data.conf"
|
|
rm -f "/etc/apache2/sites-enabled/ipAlias.${ip}.meta-data"
|
|
rm -f "/etc/apache2/sites-enabled/ipAlias.${ip}-ssl.meta-data"
|
|
config_ips=$( echo $config_ips | sed "s/${ip}://" )
|
|
done
|
|
service apache2 restart
|
|
unlock_exit $result $lock $locked
|
|
fi
|
|
|
|
#restaring the password service to enable it on the ip aliases
|
|
/etc/init.d/cloud-passwd-srvr restart
|
|
unlock_exit $? $lock $locked |