cosmetic
[infrastructure.git] / scripts / create-vm.sh
1 #!/bin/bash
2
3 COMMAND=$(basename $0)
4 DIRNAME=$(dirname $0)
5
6 BUILD="${HOME}/git-build"
7 DOMAIN=pl.sophia.inria.fr
8
9 DEFAULT_DISTRO=f14
10 DEFAULT_PERSO=linux64
11
12 INTERACTIVE=
13 DISTRO=$DEFAULT_DISTRO
14 PERSO=$DEFAULT_PERSO
15 function usage () {
16   message="$1" ; shift
17   echo "usage : $COMMAND [-i] [-f distro] [-p perso] hostname"
18   echo "  default distro is $DEFAULT_DISTRO"
19   echo "  default perso is $DEFAULT_PERSO"
20   [ -n "$message" ] && echo $message
21   exit 1
22 }
23
24 while getopts "fp:ih" flag; do
25     case $flag in
26         f) DISTRO=$OPTARG;;
27         p) PERSO=$OPTARG;;
28         i) INTERACTIVE=true ;;
29         ?|h) usage "" ;;
30     esac
31 done
32 shift $((OPTIND-1))
33 [[ -z "$@" ]] && usage "no hostname provided"
34 HOSTNAME="$1" ; shift
35 [[ -n "$@" ]] && usage "extra arguments"
36
37
38 [ -d "$BUILD" ] || usage "Could not find directory $BUILD"
39
40 [ -d /vservers/$HOSTNAME ] && usage "vserver $HOSTNAME already exists in /vservers"
41 [ -d /etc/vservers/.distributions/$DISTRO ] || usage "distro $DISTRO not known in /etc/vservers/.distributions/"
42
43 fqdn=$HOSTNAME.$DOMAIN
44 ## compute IP
45 host $fqdn | grep -q 'has address' || usage "hostname $fqdn not known to DNS"
46 ip=$(host $fqdn | grep 'has address' | awk '{print $4}')
47
48 cd $BUILD
49 git pull
50 cd -
51
52 command="$BUILD/vtest-init-vserver.sh -p $PERSO -f $DISTRO $HOSTNAME none -- --netdev eth0 --interface $ip --hostname $fqdn"
53
54 if [ -n "$INTERACTIVE" ] ; then
55     echo -n "Run $command OK ? "
56     read answer ; case $answer in [nN]*) exit 1 ;; esac
57 fi
58
59 $command