Lucas Albers napisaÅ(a):

Could you post all your conf files:
drbd.conf, haresource and any changes you made to your vserver pre startup
or post shutdown script?
Your vserver.conf or vserver.sh files if you made any big changes.
Thanks.
Between the two of you I'll get enough information to write it up in english.

Description of my configuration (poor English):

-. two PCs with 2 NICs each (one 100Mbit, one 1000Mbit).

-. I've used Debian (unstable).

-. partitioned HDD: 8GB node OS, swap, 14GB for vserver #1(V1),
   14GB for vserver #2 (V2)

-. configured NICs:
   on external (100Mbit) public IP - connected through switch to router,
   on internal (1000Mbit) private IPs
     - crossover cabel connecting nodes.

-. installed:
http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.26.tar.bz2
http://www.13thfloor.at/vserver/s_release/v1.27/patch-2.4.26-vs1.27.diff
http://www.13thfloor.at/vserver/s_release/v1.27/util-vserver-0.29.4.tar.bz2
and from debian packages (apt-get):

apt-get install ssh gcc g++ less wget tar bzip2 patch make autoconf \
automake libtool flex bison gdb kernel-package \
libncurses5-dev debhelper initrd-tools genromfs e2fslibs-dev \
debootstrap heartbeat drbd drbd-source

-. compiled kernel with vserver patch applied
   with option: "Virtual Root device support (NEW)" checked.

-. compiled drbd module using: make-kpkg modules_image

-. compiled & installed util-vserver
   cd /usr/src/util-vserver-0.29.4
   ./configure --prefix=
   make; make install

-. configured drbd on both nodes (D1 and D2) (attached file drbd.conf)
   and made ext3 partition on top of two devices (drbd0/nb0 & drbd1/nb1)

-. two folders created (on both nodes): /vservers/V1 and /vservers/V2

-. changed /etc/fstab (both nodes)
   /dev/nb0                /vserver/V1     ext3    noauto          0 0
   /dev/nb1                /vserver/V1     ext2    noauto          0 0

-. mounted (D1) drbd0 on /vservers/V1,
   mounted (D2) drbd1 on /vservers/V2

-. installed vservers using slightly modified newserver.sh script
   for debian (attached)

-. set up /etc/heartbeat/ha.cf (attached)

-. added hacluster user - missed during deb package installation:
   adduser --system --shell /bin/false --no-create-home hacluster

-. created links:
   ln -s /etc/init.d/drbd /etc/heartbeat/resource.d/datadisk
   (this is for HA - 'datadisk' is a must)
   ln -s /sbin/vserver /etc/init.d/vserver
   (for HA too)
   ln -s /sbin/util-vserver-vars /etc/init.d/util-vserver-vars
   (for /etc/init.d/vserver above)

-. after 3 days of digging: changed every 'not running' in /sbin/vserver
   to 'down'. 'not running' was confusing heartbeat while its grepping
   'vserver name status' for 'running' 8-O.

-. configured /etc/heartbeat/haresources (attached)

   where:
   d1 - is a node name of cluster
   193.x.x.2/28/eth0 - is a public IP of V1
   IPaddr::10.10.10.100/24/eth1 - is a private IP used by v1 daemons
             as loopback, it can't be lo because when d1 is hosting both
             vservers it can be occupied only by one of them. I had to
             reconfigure each daeomon (postfix, amavis, etc) to use
             this as loopback.
   datadisk::drbd0 - to mount drbd0 as 'primary'
   vserver::V1 - to start vserver after all previous...

-. removed some stop scripts in /etc/init.d/rc6.d
   rm -f !K25hwclock.sh
   rm -f S90reboot

-. creaded dir (I can't remember why - but for vservers):
   mkdir -p /var/lock/subsys/

-. entered vserver V1 & V2 ... configured as mail servers
   (postfix, amavisd, courier-pop3, clamav, sals, mysql...)

I think thats all.
Hope will help someone,
once again sorry for poor English,
rgrds.,
Konrad

BTW. Someone knows why and in what situation are created
     /proc, /dev folders inside of vseerver folder...
     while it is not mounted? How to prevent this creation?

resource drbd0 {
  inittimeout = -1
  protocol = C
  fsckcmd  = /bin/true

  disk {
    do-panic
    disk-size = 14000000k
  }


  net {
                        # -max has to be larger than -min, obviously
    sync-min    = 500k
    sync-max    = 1M    # maximal average syncer bandwidth
    tl-size     = 5000  # transfer log size, ensures strict write ordering
    timeout     = 60    # unit: 0.1 seconds
    connect-int = 10    # unit: seconds
    ping-int    = 10    # unit: seconds
    ko-count    = 4     # if some block send times out this many times,
                        # the peer is considered dead, even if it still
                        # answeres ping requests
  }

  on d1 {
    device  = /dev/nb0
    disk    = /dev/hda3
    address = 192.168.0.101
    port    = 7788
  }

  on d2 {
    device  = /dev/nb0
    disk    = /dev/hda3
    address = 192.168.0.102
    port    = 7788
  }
}

resource drbd1 {
  inittimeout = -1
  protocol = C
  fsckcmd  = /bin/true

  disk {
    do-panic
    disk-size = 14000000k
  }


  net {
                        # -max has to be larger than -min, obviously
    sync-min    = 500k
    sync-max    = 1M    # maximal average syncer bandwidth
    tl-size     = 5000  # transfer log size, ensures strict write ordering
    timeout     = 60    # unit: 0.1 seconds
    connect-int = 10    # unit: seconds
    ping-int    = 10    # unit: seconds
    ko-count    = 4     # if some block send times out this many times,
                        # the peer is considered dead, even if it still
                        # answeres ping requests
  }

  on d1 {
    device  = /dev/nb1
    disk    = /dev/hda4
    address = 192.168.0.101
    port    = 7789
  }

  on d2 {
    device  = /dev/nb1
    disk    = /dev/hda4
    address = 192.168.0.102
    port    = 7789
  }
}
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     daemon
keepalive 2
deadtime 15
warntime 20
initdead 20
udpport 694
auto_failback on

bcast     eth1

node    d1
node    d2
d1 193.x.x.2/28/eth0 IPaddr::10.10.10.100/24/eth1 datadisk::drbd0 vserver::v1
d2 193.x.x.3/28/eth0 IPaddr::10.10.10.101/24/eth1 datadisk::drbd1 vserver::v2
#!/bin/sh
VERSION='0.3.3'
#
# Copyright (C) 2002, Mark Lawrence <[EMAIL PROTECTED]>
# Copyright (C) 2002, Paul Sladen   <[EMAIL PROTECTED]>
#
# Install a virtual debian server (vserver) from a debian HTTP/FTP archive
#
# ----------------------------------------------------------------
# Configurable items:

# Root directory of your virtual servers (probably shouldn't change this)
VSERVER_ROOT="/virtual"

# Packages to install in addition to the base defaults
# MUST INCLUDE ALL DEPENDENCIES (seperated by "," commas)
INSTALL_PACKAGES="host,less,dnsutils,wget,bzip2,ssh,rsync,libssl0.9.6,liblwres1,zlib1g,libbz2-1.0,traceroute,libdns11,libisc7"

# Packages installed from within the vserver after it has
# been setup (seperated by "," commas)
EXTRA_PACKAGES=""

# Packages to remove from the base defaults (seperated by "," commas)
REMOVE_PACKAGES="dhcp-client,lilo,makedev,pcmcia-cs,ppp,pppconfig,pppoe,pppoeconf,setserial,syslinux,nano,fdutils,iptables,libpcap0,pciutils,libpci1,libpci2"

# sysvinit services relating to hardware access to remove
REMOVE_LINKS="klogd hwclock.sh setserial urandom networking umountfs halt reboot"

# Architecture: overide on non-Debian host such as Redhat
# otherwise dpkg will detect whether we are i386/powerpc/sparc/etc
ARCH=""

# Which debian distribution (warning: this has only been tested with woody)
DIST="sid"

# Local or nearest location of a debian mirror (must include the `/debian')
MIRROR="http://ftp.pl.debian.org/debian";

# Default network interface for vservers:
INTERFACE="eth0"

# Copy vreboot/vhalt/vshutdown utility into /usr/local/sbin/
COPY_VREBOOT="true"

# ----------------------------------------------------------------
# Nothing from here on should need changing.
# ----------------------------------------------------------------

# NOTE: debootstrap handles multiple MIRRORs, so there is no reason why
# we shouldn't too--that way we could just let it build /etc/apt/sources.list

usage ()
{
    cat << EOF 1>&2
usage:  ${0##*/} [OPTIONS] --hostname x --domain y.z --ip 1.2.3.4
    (see --help for more information)
EOF
}
full_usage ()
{
    cat << EOF
Usage:  ${0##*/} [OPTIONS] --hostname x --domain y.z --ip 1.2.3.4
Creates a new Debian vserver by downloading packages via HTTP/FTP

Options:
        -h, --help              this help
        -V, --version           copyright and version information
    --arch                      set target architecture (eg. --arch "i386")
                (autodetected on Debian host if dpkg available)
    --copy-vreboot              install "vreboot/vshutdown/vhalt"
    --no-copy-vreboot   don't install "vreboot/vshutdown/vhalt"
    --dist                      defaults to "woody", passed to debootstrap.
    --fakeinit          use "/sbin/init" to boot vserver
    --interface         interface for IP addresses (if not "eth0")
    --mirror            Debian HTTP/FTP mirror (including the /debian)
    --sshkeys           copy pub-keys to "/root/.ssh/authorized_keys"
    -v, --verbose               show extra output during setup
    --vsroot            location of "/vserver/" directory
Required:
    --hostname          hostname for new vserver (eg. "alpha")
    --domain            dns domain for new vserver (eg. "example.com")
    --ip                        IPv4 address for new vserver

EOF
}
full_version ()
{
    cat << EOF
${0##*/} version $VERSION
Copyright (c) 2002 Mark Lawrence <[EMAIL PROTECTED]>
Copyright (c) 2002 Paul Sladen   <[EMAIL PROTECTED]>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

EOF
}
parse_args ()
{
    while [ $# -gt 0 ] ; do
        #echo "parse_args() doing :$#: :$1: :$*:"
        case "$1" in
            --help|-h)
            full_usage
            shift
            exit 0
            ;;
            --version|-V)
            full_version
            shift
            exit 0
            ;;
            --arch)
            case "$2" in
                [a-z]*)
                ARCH="$2"
                ;;
                *)
                echo "${0##*/} error: $1 overrides dpkg autodetect on non-Debian 
host-servers" 1>&2
                echo 'e.g. "i386"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --copy-vreboot)
            COPY_VREBOOT="true"
            shift
            ;;
            --no-copy-vreboot)
            COPY_VREBOOT=""
            shift
            ;;
            --dist)
            case "$2" in
                [a-z]*)
                DIST="$2"
                if [ "woody" != "$2" ]; then
                    echo "${0##*/} warning: I only know how to do \"woody\", be 
careful!" 1>&2
                fi
                ;;
                *)
                echo "${0##*/} error: $1 requires a Debian distribution" 1>&2
                echo 'e.g. "woody"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --domain)
            case "$2" in
                [a-z]*[a-z])
                VDOMAIN="$2"
                ;;
                *)
                echo "${0##*/} error: $1 requires a dns domain-name" 1>&2
                echo 'e.g. "example.com"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --fakeinit)
                # Note space at beginning--this gets tagged straight on
            FAKEINIT=" fakeinit"
            shift
            ;;
            --hostname)
            case "$2" in
                [a-z]*[a-z0-9])
                VHOST="$2"
                ;;
                *)
                echo "${0##*/} error: $1 must be a hostname for the vserver" 1>&2
                echo 'e.g. "alpha"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --interface)
            case "$2" in
                [a-z]*)
                INTERFACE="$2"
                ;;
                *)
                echo "${0##*/} error: $1 must be followed by a network interface" 1>&2
                echo 'e.g. "eth1"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --ip)
            # This does for an octet: 
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]) ;-)
            case "$2" in
                [0-9]*.[0-9]*.[0-9]*.[0-9]*)
                IP="$2"
                ;;
                *)
                echo "${0##*/} error: $1 requires a single IPv4  e.g. 
\"192.168.100.1\"" 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --mirror)
            case "$2" in
                [hf]*://*)
                MIRROR="$2"
                ;;
                *)
                echo "${0##*/} error: $1 requires a debian mirror"  1>&2
                echo 'e.g. "http://ftp.uk.debian.org/debian";' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            --verbose|-v)
            export verbose="true"
            shift
            ;;
            --sshkeys)
            if [ -f "$2" ]; then
                SSH_KEYS="$2"
            else
                echo "${0##*/} error: $1 must be followed by a valid public-key-file!" 
1>&2
                echo 'e.g. "/root/.ssh/id_dsa.pub"' 1>&2
                exit 1
            fi
            shift 2
            ;;
            --vsroot)
            case "$2" in
                /*)
                if [ -d "$2" ]; then
                    VSERVER_ROOT="$2"
                else
                    echo "${0##*/} error: $1 needs a valid absolute directory"  1>&2
                    echo 'e.g. "/vservers"' 1>&2
                    exit 1
                fi
                ;;
                *)
                echo "${0##*/} error: $1 needs a valid absolute directory"  1>&2
                echo 'e.g. "/vservers"' 1>&2
                exit 1
                ;;
            esac
            shift 2
            ;;
            -*)
            usage
            exit 1
            ;;
            ?*)
            usage
            exit 1
            ;;
        esac
    done
}

parse_args $@

if ! [ -n "$VHOST" -a -n "$VDOMAIN" -a -n "$IP" ]; then
    echo "${0##*/} error: --hostname, --domain and --ip are required" 1>&2
    usage
    exit 1
fi

# Strip final slashes off a couple of things
MIRROR="${MIRROR%/}"
VSERVER_ROOT="${VSERVER_ROOT%/}"

# Check we've got debootstrap available
if [ ! -x /usr/sbin/debootstrap ]; then
  cat << EOF 1>&2
${0##*/}: Requires the debootstrap package to bootstrap Debian
  Debian Host:  apt-get install debootstrap
  RPM Host:     rpm -i 
http://people.debian.org/~blade/install/debootstrap/debootstrap-0.1.17.3-2.i386.rpm
EOF
  exit 1
fi

if ! cat /proc/self/status | grep '^s_context:[^0-9]0$'; then
    echo "${0##*/} error:"
    echo "      Must be run from the host server (security context 0)" 1>&2
    echo '      on a "vserver/ctx-patch" enabled kernel' 1>&2
    echo '      See: http://www.solucorp.qc.ca/miscprj/s_context.hc' 1>&2
    exit 1
fi

if [ -x /usr/bin/id ] && [ `id -u` -ne 0 ]; then
  echo "${0##*/} error: Must be run as root!" 1>&2
  exit 1
fi

# check for /vserver/$VHOST/etc/ incase we are on pre-mounted LVM partition
# (used to just check for "/vserver/$VHOST/" existing
if [ -d "$VSERVER_ROOT/$VHOST/etc/" -o -f "/etc/vservers/$VHOST.conf" ] ; then
  cat << EOF 1>&2
${0##*/} error: Virtual Server "$VHOST" appears to already exist
  check "/etc/vservers/$VHOST.conf" or "/vservers/$VHOST/etc/";
EOF
  exit 1
fi

# This is used to keep a cache of the downloaded .deb packges for next install
if [ -d "$VSERVER_ROOT/ARCHIVES" ]; then
    mkdir -p "$VSERVER_ROOT/$VHOST/var/cache/apt/archives"
    cp -a "$VSERVER_ROOT/ARCHIVES/"*.deb "$VSERVER_ROOT/$VHOST/var/cache/apt/archives"
fi

# We only want to pass the Architecture if we need to (autodectected otherwise)
if [ -n "$ARCH" ]; then
    ARCH_ARGUMENT="--arch $ARCH"
fi

# Fire off `debootstrap' to do all the hard work
# like downloading and installing
if ! /usr/sbin/debootstrap $ARCH_ARGUMENT \
    "--include=$INSTALL_PACKAGES" "--exclude=$REMOVE_PACKAGES" \
    "$DIST" "$VSERVER_ROOT/$VHOST" "$MIRROR" ; then
    echo "${0##*/}: error: debootstrap failure. Cannot continue."
    exit 1
fi

# Make it so that apt and friends work
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/apt/sources.list"
deb $MIRROR/ stable main non-free contrib
deb-src $MIRROR/ stable main non-free contrib

deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

deb http://security.debian.org stable/updates main contrib non-free

EOF

# Fix up the available device nodes, for security
if cd "$VSERVER_ROOT/$VHOST/dev"; then
    tar cfp /tmp/dev.tar.$$ full null ptmx random tty urandom zero
    rm -rf $VSERVER_ROOT/$VHOST/dev/*
    tar xfp /tmp/dev.tar.$$
    rm /tmp/dev.tar.$$
    mkdir pts
    mkdir shm
fi

# Give the new host a hostname
echo "$VHOST" > "$VSERVER_ROOT/$VHOST/etc/hostname"

# Set up the /etc/hosts file (needed for some parts of the base-config)
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/hosts"
# /etc/hosts

127.0.0.1       localhost
$IP     $VHOST.$VDOMAIN $VHOST

# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

EOF

# grab DNS servers from the host-server for `resolv.conf'
(echo search $VDOMAIN ; grep '^nameserver' /etc/resolv.conf) \
    > "$VSERVER_ROOT/$VHOST/etc/resolv.conf"

# If there is a proxy server statement in-use in the Host server, copy it across
if [ -f /etc/apt/apt.conf ]; then
    cp /etc/apt/apt.conf $VSERVER_ROOT/$VHOST/etc/apt/apt.conf
fi

# This old uname was putting the name of the *host* into the vserver motd
# uname -a > $VSERVER_ROOT/$VHOST/etc/motd

# Create a shorter motd (uname -a would give name of host-server)
echo "Debian GNU/Linux ($DIST/$(uname -m)) $VHOST.$VDOMAIN" \
    > "$VSERVER_ROOT/$VHOST/etc/motd"

# Create a dummy fstab
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/fstab"
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump>  <pass>
proc            /proc           proc    defaults                        0       0
EOF

# The new vserver patch now automatically mounts /proc
# Debian needs /dev/pts mounting "gid=5,mode=620" by vserver
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/mtab"
/dev/hdv1 / vfs none 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
EOF

# Create a reduced inittab that doesn't start getty on the consoles
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/inittab"
# /etc/inittab: init(8) configuration.

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

EOF

# By default the Debian Install script runs zillions of cron jobs at
# 0625 every morning.  On a system with lots of vservers all trying to
# scan the disk at the same time this causes $MAJOR disk-thrash.  So
# we randomize it a bit so that they run evenly between 1am and 7am,
# avoiding the 5minutes either side of the hour when other stuff tends
# to be scheduled.  (BTW, this solution is Overkill!)

# This looks over complicated--and it probably is...:
#
# a) We want the DAILY jobs to run between :05 and :55 minutes past
# b) We want the WEEKLY job 3-5 minutes after the DAILY.
# c) And the MONTHLY job 3-5 minutes after that.
# d) Make sure all three jobs are started by 55minutes past (five-to)
#    ...if they were ever to all run on the same day!

d1=$(($RANDOM % 3 + 3));      #   between  3 and  5
d2=$(($RANDOM % 3 + 3));      #   between  3 and  5
dt=$((50 - $d1 - $d2));       #   between  0 and 44

DAILY=$(($RANDOM % $dt + 5))  #   between  5 and 49
WEEKLY=$(($DAILY + $d1))      #   between  8 and 52
MONTHLY=$(($WEEKLY + $d2))    #   between 11 and 55

HOUR=$(($RANDOM % 6 + 1))     #   between  1 and  7 (AM localtime)

# Create replacement /etc/crontab with randomized times above
cat << EOF > "$VSERVER_ROOT/$VHOST/etc/crontab"
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the \`crontab\'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
$DAILY $HOUR    * * *   root    test -e /usr/sbin/anacron || run-parts --report 
/etc/cron.daily
$WEEKLY $HOUR   * * 7   root    test -e /usr/sbin/anacron || run-parts --report 
/etc/cron.weekly
$MONTHLY $HOUR  1 * *   root    test -e /usr/sbin/anacron || run-parts --report 
/etc/cron.monthly

EOF

# Create default /etc/vservers entry
cat << EOF > /etc/vservers/$VHOST.conf
S_HOSTNAME="$VHOST"
IPROOT="$IP"
IPROOTDEV="eth0"
ONBOOT="yes"
S_NICE=""
S_FLAGS="lock nproc$FAKEINIT"
ULIMIT="-H -u 256 -n 1024"
S_CAPS="CAP_NET_RAW"

# *NOT* DNS domain name, for NIS only
S_DOMAINNAME=""

EOF

if [ -n "$EXTRA_PACKAGES" ]; then
    EXTRA_PACKAGES_INSTALL="apt-get --assume-yes install ${EXTRA_PACKAGES//,/ }"
fi

# ------------------------------------------------------------
# From here on we do things live in the server
# Generate the script that runs the rest of the setup from within the
# virtual server.
cat << EOF > $VSERVER_ROOT/$VHOST/vserver-config.sh
#!/bin/sh

dselect update

tzsetup -y

dpkg-reconfigure passwd

tasksel

rm -f /etc/exim/exim.conf
eximconfig

# because the --exclude flag doesn\'t seem to work on debootstrap
apt-get --assume-yes --purge remove `echo $REMOVE_PACKAGES | sed -e 's/,/ /g'`

for link in $REMOVE_LINKS
do
    update-rc.d -f \$link remove
done

$EXTRA_PACKAGES_INSTALL

EOF

# Run the above commands from within the server
chmod 755 $VSERVER_ROOT/$VHOST/vserver-config.sh
vserver $VHOST exec /vserver-config.sh
rm -f $VSERVER_ROOT/$VHOST/vserver-config.sh

# If you need to install your SSH management keys into the vserver
if [ -f "$SSH_KEYS" ]; then
    mkdir -p "$VSERVER_ROOT/$VHOST/root/.ssh"
    chmod 700 "$VSERVER_ROOT/$VHOST/root/.ssh/"
    cat "$SSH_KEYS" >> "$VSERVER_ROOT/$VHOST/root/.ssh/authorized_keys"
    chmod 600 "$VSERVER_ROOT/$VHOST/root/.ssh/authorized_keys"
fi

# Install the vreboot/rebootmgr utility--hopefully this will disappear soon
VREBOOT_LOCATION="/usr/lib/vserver/vreboot"
if [ "$COPY_VREBOOT" == "true" -a -x "$VREBOOT_LOCATION" ]; then
    cp -a "$VREBOOT_LOCATION" "$VSERVER_ROOT/$VHOST/usr/local/sbin/"
    chmod 750 "$VSERVER_ROOT/$VHOST/usr/local/sbin/vreboot"
    # ln -s "$VSERVER_ROOT/$VHOST/usr/local/sbin/"{vshutdown,vreboot}
    # ln -s "$VSERVER_ROOT/$VHOST/usr/local/sbin/"{vhalt,vreboot}
fi

# Stop all the processes that were started inside the server
export PREVLEVEL=2
vserver $VHOST exec /etc/init.d/rc 0
vserver $VHOST stop

# Populate the archive for future virtual servers
if [ ! -d $VSERVER_ROOT/ARCHIVES ]; then
    mkdir $VSERVER_ROOT/ARCHIVES
fi
cp $VSERVER_ROOT/$VHOST/var/cache/apt/archives/*.deb $VSERVER_ROOT/ARCHIVES

echo
echo "You should now adjust /etc/vservers/$VHOST.conf to suit your needs,"
echo "or else just go ahead and type \`vserver $VHOST start' to start"
echo "your new virtual server.  debian/rules!"
echo
_______________________________________________
Vserver mailing list
[EMAIL PROTECTED]
http://list.linux-vserver.org/mailman/listinfo/vserver

Reply via email to