80 lines
1.8 KiB
Bash
Executable file
80 lines
1.8 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Script to create an OpenVZ VE for a specific hostname
|
|
# The hostname must be present in $CONFIGBASE/host.map
|
|
|
|
DEFAULT_CONFFILE=/etc/egscripts/make-openvz-ve.conf
|
|
DEFAULT_CONFIGBASE=/etc/egscripts/openvz
|
|
DEFAULT_CONFIGTEMPLATE=vps.basic
|
|
DEFAULT_VZCONFDIR=/etc/vz
|
|
DEFAULT_DOMAIN=kc
|
|
DEFAULT_NAMESERVER=10.128.2.11
|
|
|
|
#
|
|
# Any of the variables below can be overriden either as environment variables
|
|
# or in the configuration file. Either specified on the command line or from
|
|
# the default above
|
|
#
|
|
CONFFILE=${CONFFILE-$DEFAULT_CONFFILE}
|
|
CONFIGBASE=${CONFIGBASE-$DEFAULT_CONFIGBASE}
|
|
CONFIGTEMPLATE=${CONFIGTEMPLATE-$DEFAULT_CONFIGTEMPLATE}
|
|
VZCONFDIR=${VZCONFDIR-$DEFAULT_VZCONFDIR}
|
|
DOMAIN=${DOMAIN-$DEFAULT_DOMAIN}
|
|
NAMESERVER=${NAMESERVER-$DEFAULT_NAMESERVER}
|
|
|
|
START=1
|
|
|
|
usage() {
|
|
cat <<EOT
|
|
Usage: `basename $0` [ -h ] [ -N ] [ -c configfile ] hostname
|
|
EOT
|
|
}
|
|
|
|
while getopts "c:hN" OPT ; do
|
|
case $OPT in
|
|
c) $CONFFILE=$OPTARG ;;
|
|
h) usage ; exit 0;;
|
|
N) START=0 ;;
|
|
*) usage ; exit 1;;
|
|
esac
|
|
done
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
if [ $# -ne 1 ] ; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
TARGETHOST=$1
|
|
|
|
# Exit on any error
|
|
set -e
|
|
|
|
if [ -f $CONFFILE ] ; then
|
|
. $CONFFILE
|
|
fi
|
|
|
|
while read HOST OSTEMPLATE VEID IP ; do
|
|
if [ "$HOST" == "$TARGETHOST" ] ; then
|
|
echo "Creating host $HOST with VEID $VEID and IP $IP"
|
|
|
|
. $VZCONFDIR/vz.conf
|
|
|
|
vzctl create $VEID --config $CONFIGTEMPLATE --ostemplate $OSTEMPLATE --hostname $HOST --ipadd $IP
|
|
vzctl set $VEID --name $HOST --save
|
|
vzctl set $VEID --features "nfs:on" --save
|
|
vzctl set $VEID --nameserver "$NAMESERVER" --save
|
|
|
|
# The apt cache has most likely been updated since the template was
|
|
# created, so do a one off update
|
|
chroot $VE_PRIVATE /usr/bin/aptitude update
|
|
|
|
if [ $START -eq 1 ] ; then
|
|
vzctl start $VEID
|
|
fi
|
|
exit 0
|
|
fi
|
|
done < $CONFIGBASE/host.map
|
|
|
|
echo "Host $TARGETHOST not found in $CONFIGBASE/host.map"
|