vserver: Make the vserver-create script update the dns verserver's hosts file.
[matthijs/servers/drsnuggles.git] / usr / local / bin / vserver-create
index b73f6a267976d9649190f5427afad970040df62d..cd621d53fb6c65ce51b6d6946de72d5e8c384043 100755 (executable)
@@ -1,11 +1,23 @@
 #!/bin/sh
 
-TEMPLATE=template
+# The dir containing vserver configuration
 VSERVERS_CONF=/etc/vservers
+# The vserver to use as a template
+TEMPLATE=template
+# A file containing files (or masks) to not copy from the template vserver.
 EXCLUDE_FILE="$VSERVERS_CONF/clone-exclude"
+# The ip range to use for creating a new vserver. A number between 2 and 253
+# will be appended to this, until an address is found that is not used by
+# another vserver..
 IP_RANGE=10.42.0.
+# The interface on which to create the vserver
 INTERFACE=dummy0
+# The netmask for the address
 NETMASK=24
+HOSTS_VSERVER=dns
+# The hosts file to which an entry for the new vserver should be added. Can be
+# left empty to not record the new vserver anywhere.
+HOSTS_FILE=$VSERVERS_CONF/$HOSTS_VSERVER/vdir/etc/hosts
 
 function usage()
 {
@@ -47,7 +59,10 @@ if ! find_ip; then
        exit 1
 fi;
 
+echo "Creating vserver $NAME with address $IP..."
 sudo vserver $NAME build -m clone --hostname $HOST --interface $INTERFACE:$IP/$NETMASK -- --source $TEMPLATE --exclude-from $EXCLUDE_FILE
+
+echo "Vserver created, configuring..."
 sudo vserver $NAME start
 # Regen ssh keys
 sudo vserver $NAME exec dpkg-reconfigure openssh-server
@@ -68,3 +83,7 @@ CONF_FOR_GIT=`echo $VSERVERS_CONF/$NAME | sed "s#^/*##"`
 # Commit the configuration
 (cd /; git add $CONF_FOR_GIT)
 (cd /; git commit $CONF_FOR_GIT --edit --message "vserver: Add $NAME vserver configuration.")
+
+if [ -n "$HOSTS_FILE" ]; then
+       sudo sh -c "echo '$IP   $NAME' >> '$HOSTS_FILE'"
+fi