diff --git a/deployment.sh b/deployment.sh
index b064f1e..ae12288 100755
--- a/deployment.sh
+++ b/deployment.sh
@@ -1,104 +1,12 @@
 #!/bin/bash
-# Purpose: automatically install Debian + sip:provider platform
-################################################################################
-
-INSTALL_LOG='/tmp/deployment-installer-debug.log'
-exec  > >(tee -a $INSTALL_LOG    )
-exec 2> >(tee -a $INSTALL_LOG >&2)
-
-# set version to git commit ID
-SCRIPT_VERSION=OUTDATED
-
-# not set? then fall back to timestamp of execution
-if [ -z "$SCRIPT_VERSION" ] || [ "$SCRIPT_VERSION" = '%SCRIPT_VERSION%' ] ; then
-  SCRIPT_VERSION=$(date +%s) # seconds since 1970-01-01 00:00:00 UTC
-fi
-
-# Never ever execute the script outside of a
-# running Grml live system because partitioning
-# disks might destroy data. Seriously.
-if ! [ -r /etc/grml_cd ] ; then
-  echo "Not running inside Grml, better safe than sorry. Sorry." >&2
-  exit 1
-fi
 
 # better safe than sorry
 export LC_ALL=C
 export LANG=C
 
-# defaults
-DEFAULT_INSTALL_DEV=eth0
-DEFAULT_IP1=192.168.255.251
-DEFAULT_IP2=192.168.255.252
-DEFAULT_INTERNAL_NETMASK=255.255.255.248
-DEFAULT_MCASTADDR=226.94.1.1
-TARGET=/mnt
-PRO_EDITION=false
-CE_EDITION=false
-NGCP_INSTALLER=false
-PUPPET=''
-RESTART_NETWORK=true
-INTERACTIVE=false
-DHCP=false
-LOGO=true
-BONDING=false
-VLAN=false
-VLANID=''
-VLANIF=''
-RETRIEVE_MGMT_CONFIG=false
-LINUX_HA3=false
-TRUNK_VERSION=false
-DEBIAN_RELEASE=wheezy
-HALT=false
-REBOOT=false
-STATUS_DIRECTORY=/srv/deployment/
-STATUS_WAIT=0
-LVM=true
-VAGRANT=false
-ADJUST_FOR_LOW_PERFORMANCE=false
-ENABLE_VM_SERVICES=false
-FILESYSTEM="ext4"
-SYSTEMD=false
-DEBIAN_REPO_HOST="debian.sipwise.com"
-SIPWISE_REPO_HOST="deb.sipwise.com"
-
-# if TARGET_DISK environment variable is set accept it
-if [ -n "$TARGET_DISK" ] ; then
-  export DISK="${TARGET_DISK}"
-else # otherwise try to find sane default
-  if [ -L /sys/block/vda ] ; then
-    export DISK=vda # will be configured as /dev/vda
-  else
-    # in some cases, sda is not the HDD, but the CDROM,
-    # so better walk through all devices.
-    for i in /sys/block/sd*; do
-      if grep -q 0 ${i}/removable; then
-        export DISK=$(basename $i)
-        break
-      fi
-    done
-  fi
-fi
+TIMEOUT=30
 
 ### helper functions {{{
-set_deploy_status() {
-  [ -n "$1" ] || return 1
-  echo "$*" > "${STATUS_DIRECTORY}"/status
-}
-
-enable_deploy_status_server() {
-  mkdir -p "${STATUS_DIRECTORY}"
-
-  # get rid of already running process
-  PID=$(pgrep -f 'python.*SimpleHTTPServer') || true
-  [ -n "$PID" ] && kill $PID
-
-  (
-    cd "${STATUS_DIRECTORY}"
-    python -m SimpleHTTPServer 4242 >/tmp/status_server.log 2>&1 &
-  )
-}
-
 CMD_LINE=$(cat /proc/cmdline)
 stringInString() {
   local to_test_="$1"   # matching pattern
@@ -123,2514 +31,34 @@ getBootParam() {
   return 0
 }
 
-# load ":"-separated nfs ip into array BP[client-ip], BP[server-ip], ...
-# ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
-# $1: Array name (needs "declare -A BP" before call), $2: ip=... string
-loadNfsIpArray() {
-  [ -n "$1" ] && [ -n "$2" ] || return 0
-  local IFS=":"
-  local ind=(client-ip server-ip gw-ip netmask hostname device autoconf)
-  local i
-  for i in $2 ; do
-    eval $1[${ind[n++]}]=$i
-  done
-  [ "$n" == "7" ] && return 0 || return 1
-}
-
-install_sipwise_key() {
-  if "$PRO_EDITION" ; then
-    wget -O /etc/apt/trusted.gpg.d/sipwise.gpg http://${SIPWISE_REPO_HOST}/sppro/sipwise.gpg
-  else
-    wget -O /etc/apt/trusted.gpg.d/sipwise.gpg http://${SIPWISE_REPO_HOST}/spce/sipwise.gpg
-  fi
-
-  md5sum_sipwise_key_expected=32a4907a7d7aabe325395ca07c531234
-  md5sum_sipwise_key_calculated=$(md5sum /etc/apt/trusted.gpg.d/sipwise.gpg | awk '{print $1}')
-
-  if [ "$md5sum_sipwise_key_calculated" != "$md5sum_sipwise_key_expected" ] ; then
-    die "Error validating sipwise keyring for apt usage (expected: [$md5sum_sipwise_key_expected] - got: [$md5sum_sipwise_key_calculated])"
-  fi
-}
-
-# see MT#6253
-fai_upgrade() {
-  upgrade=false # upgrade only if needed
-
-  local required_version=4.2.4+0
-  local present_version=$(dpkg-query --show --showformat='${Version}' fai-setup-storage)
-
-  if dpkg --compare-versions $present_version lt $required_version ; then
-    echo "fai-setup-storage version $present_version is older than minimum required version $required_version - upgrading."
-    upgrade=true
-  fi
-
-  local required_version=0.17-2
-  local present_version=$(dpkg-query --show --showformat='${Version}' liblinux-lvm-perl)
-
-  if dpkg --compare-versions $present_version lt $required_version ; then
-    echo "liblinux-lvm-perl version $present_version is older than minimum required version $required_version - upgrading."
-    upgrade=true
-  fi
-
-  if ! "$upgrade" ; then
-    echo "fai-setup-storage and liblinux-lvm-perl are OK already, nothing to do about it."
-    return 0
-  fi
-
-  install_sipwise_key
-
-  # use temporary apt database for speed reasons
-  local TMPDIR=$(mktemp -d)
-  mkdir -p "${TMPDIR}/statedir/lists/partial" "${TMPDIR}/cachedir/archives/partial"
-  local debsrcfile=$(mktemp)
-  echo "deb http://${SIPWISE_REPO_HOST}/wheezy-backports wheezy-backports main" >> "$debsrcfile"
-
-  DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-    -o dir::state="${TMPDIR}/statedir" -o dir::etc::sourcelist="$debsrcfile" \
-    -o Dir::Etc::sourceparts=/dev/null update
-
-  DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-    -o dir::state="${TMPDIR}/statedir" -o dir::etc::sourcelist="$debsrcfile" \
-    -o Dir::Etc::sourceparts=/dev/null -y install fai-setup-storage liblinux-lvm-perl
-}
-
-grml_debootstrap_upgrade() {
-  local required_version=0.67
-  local present_version=$(dpkg-query --show --showformat='${Version}' grml-debootstrap)
-
-  if dpkg --compare-versions $present_version lt $required_version ; then
-    echo "grml-deboostrap version $present_version is older than minimum required version $required_version - upgrading."
-
-    # use temporary apt database for speed reasons
-    local TMPDIR=$(mktemp -d)
-    mkdir -p "${TMPDIR}/statedir/lists/partial" "${TMPDIR}/cachedir/archives/partial"
-    local debsrcfile=$(mktemp)
-    echo "deb http://${SIPWISE_REPO_HOST}/grml.org grml-testing main" >> "$debsrcfile"
-
-    # the Sipwise deb.grml.org mirror is signed with 0xA42C4F2A (= 680FBA8A)
-    wget -O /etc/apt/680FBA8A.asc http://${SIPWISE_REPO_HOST}/autobuild/680FBA8A.asc
-    apt-key add /etc/apt/680FBA8A.asc
-
-    DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-      -o dir::state="${TMPDIR}/statedir" -o dir::etc::sourcelist="$debsrcfile" \
-      -o Dir::Etc::sourceparts=/dev/null update
-
-    DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-      -o dir::state="${TMPDIR}/statedir" -o dir::etc::sourcelist="$debsrcfile" \
-      -o Dir::Etc::sourceparts=/dev/null -y install grml-debootstrap
-  fi
-}
-
-# we need version >=4.3.14-1~bpo70+1 for usage with recent kernel versions
-install_vbox_package() {
-  echo "Installing virtualbox-guest-additions-iso"
-
-  # use temporary apt database for speed reasons
-  local TMPDIR=$(mktemp -d)
-  mkdir -p "${TMPDIR}/etc/preferences.d" "${TMPDIR}/statedir/lists/partial" \
-    "${TMPDIR}/cachedir/archives/partial"
-  echo "deb http://${DEBIAN_REPO_HOST}/debian/ wheezy-backports non-free" > \
-    "${TMPDIR}/etc/sources.list"
-
-  DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-    -o dir::state="${TMPDIR}/statedir" -o dir::etc="${TMPDIR}/etc" \
-    -o dir::etc::trustedparts="/etc/apt/trusted.gpg.d/" update
-
-  DEBIAN_FRONTEND='noninteractive' apt-get -o dir::cache="${TMPDIR}/cachedir" \
-    -o dir::etc="${TMPDIR}/etc" -o dir::state="${TMPDIR}/statedir" \
-    -o dir::etc::trustedparts="/etc/apt/trusted.gpg.d/" \
-    -y --no-install-recommends install virtualbox-guest-additions-iso
-}
-
-ensure_augtool_present() {
-  if [ -x /usr/bin/augtool ] ; then
-    echo "/usr/bin/augtool is present, nothing to do"
-  else
-    echo "augtool isn't present, installing augeas-tools package:"
-
-    apt-get update
-    DEBIAN_FRONTEND='noninteractive' apt-get -y install augeas-tools
-  fi
-}
-### }}}
-
-# logging {{{
-#cat > /etc/rsyslog.d/logsend.conf << EOF
-#*.*  @@192.168.51.28
-#EOF
-#/etc/init.d/rsyslog restart
-
-logit() {
-  logger -t grml-deployment "$@"
-}
-
-die() {
-  logger -t grml-deployment "$@"
-  echo "$@" >&2
-  set_deploy_status "error"
-  exit 1
-}
-
-enable_trace() {
-  if checkBootParam debugmode ; then
-    set -x
-    PS4='+\t '
-  fi
-}
-
-disable_trace() {
-  if checkBootParam debugmode ; then
-    set +x
-    PS4=''
-  fi
-}
-
-
-logit "host-IP: $(ip-screen)"
-logit "deployment-version: $SCRIPT_VERSION"
-# }}}
-
-test -z "${DISK}" \
-  && die "Error: No non-removable disk suitable for installation found"
-
-enable_deploy_status_server
-
-set_deploy_status "checkBootParam"
-
-enable_trace
-
-if checkBootParam ngcpstatus ; then
-  STATUS_WAIT=$(getBootParam ngcpstatus || true)
-  [ -n "$STATUS_WAIT" ] || STATUS_WAIT=30
-fi
-
-if checkBootParam noinstall ; then
-  echo "Exiting as requested via bootoption noinstall."
-  exit 0
-fi
-
-if checkBootParam nocolorlogo ; then
-  LOGO=false
-fi
-
-if checkBootParam ngcphav3 ; then
-  LINUX_HA3=true
-  PRO_EDITION=true
-fi
-
-if checkBootParam ngcpnobonding ; then
-  BONDING=false
-fi
-
-if checkBootParam ngcpbonding ; then
-  BONDING=true
-fi
-
-if checkBootParam vlan ; then
-  VLANPARAMS=($(getBootParam vlan | tr ":" "\n"))
-  if [ ${#VLANPARAMS[@]} -eq 2 ] ; then
-    VLAN=true
-    VLANID=${VLANPARAMS[0]}
-    VLANIF=${VLANPARAMS[1]}
-  fi
-fi
-
-if checkBootParam ngcpmgmt ; then
-  MANAGEMENT_IP=$(getBootParam ngcpmgmt)
-  RETRIEVE_MGMT_CONFIG=true
-fi
-
-if checkBootParam ngcptrunk ; then
-  TRUNK_VERSION=true
-fi
-export TRUNK_VERSION # make sure it's available within grml-chroot subshell
-
-## detect environment {{{
-CHASSIS="No physical chassis found"
-if dmidecode| grep -q 'Rack Mount Chassis' ; then
-  CHASSIS="Running in Rack Mounted Chassis."
-elif dmidecode| grep -q 'Location In Chassis: Not Specified'; then
-  :
-elif dmidecode| grep -q 'Location In Chassis'; then
-  CHASSIS="Running in blade chassis $(dmidecode| awk '/Location In Chassis/ {print $4}')"
-  PRO_EDITION=true
-fi
-
-if checkBootParam ngcpinst || checkBootParam ngcpsp1 || checkBootParam ngcpsp2 || \
-  checkBootParam ngcppro || checkBootParam ngcpce ; then
-  NGCP_INSTALLER=true
-fi
-
-if checkBootParam ngcpce ; then
-  CE_EDITION=true
-fi
-
-if checkBootParam ngcppro || checkBootParam ngcpsp1 || checkBootParam ngcpsp2 ; then
-  PRO_EDITION=true
-fi
-
-if "$PRO_EDITION" ; then
-  ROLE=sp1
-
-  if checkBootParam ngcpsp2 ; then
-    ROLE=sp2
-  fi
-fi
-
-if checkBootParam "puppetenv" ; then
-  # we expected to get the environment for puppet
-  PUPPET=$(getBootParam puppetenv)
-fi
-
-if checkBootParam "debianrelease" ; then
-  DEBIAN_RELEASE=$(getBootParam debianrelease)
-fi
-
-ARCH=$(dpkg --print-architecture)
-if checkBootParam "arch" ; then
-  ARCH=$(getBootParam arch)
-fi
-
-# test unfinished releases against
-# "http://deb.sipwise.com/autobuild/ release-$AUTOBUILD_RELEASE"
-if checkBootParam ngcpautobuildrelease ; then
-  AUTOBUILD_RELEASE=$(getBootParam ngcpautobuildrelease)
-  export SKIP_SOURCES_LIST=true # make sure it's available within grml-chroot subshell
-fi
-
-if checkBootParam ngcpmrrelease ; then
-  MRBUILD_RELEASE=$(getBootParam ngcpmrrelease)
-  export SKIP_SOURCES_LIST=true # make sure it's available within grml-chroot subshell
-fi
-
-# existing ngcp releases (like 2.2) with according repository and installer
+# boot option check
 if checkBootParam ngcpvers ; then
   SP_VERSION=$(getBootParam ngcpvers)
 fi
 
-if checkBootParam nongcp ; then
-  echo "Will not execute ngcp-installer as requested via bootoption nongcp."
-  NGCP_INSTALLER=false
-fi
-
-# configure static network in installed system?
-if checkBootParam ngcpnw.dhcp ; then
-  DHCP=true
-fi
-
-if checkBootParam ngcphostname ; then
-  TARGET_HOSTNAME="$(getBootParam ngcphostname)" || true
-fi
-
-if [ -n "$TARGET_HOSTNAME" ] ; then
-  export HOSTNAME="$TARGET_HOSTNAME"
-else
-  [ -n "$HOSTNAME" ] || HOSTNAME="nohostname"
-  export HOSTNAME
-fi
-
-if checkBootParam ngcpip1 ; then
-  IP1=$(getBootParam ngcpip1)
-fi
-
-if checkBootParam ngcpip2 ; then
-  IP2=$(getBootParam ngcpip2)
-fi
-
-if checkBootParam ngcpnetmask ; then
-  INTERNAL_NETMASK=$(getBootParam ngcpnetmask)
-fi
-
-if checkBootParam ngcpeaddr ; then
-  EADDR=$(getBootParam ngcpeaddr)
-fi
-
-if checkBootParam ngcpeiface ; then
-  EIFACE=$(getBootParam ngcpeiface)
-fi
-
-if checkBootParam ngcpmcast ; then
-  MCASTADDR=$(getBootParam ngcpmcast)
-fi
-
-if checkBootParam ngcpcrole ; then
-  CROLE=$(getBootParam ngcpcrole)
-fi
-
-if checkBootParam ngcpcmaster ; then
-  CMASTER=$(getBootParam ngcpcmaster)
-fi
-
-if checkBootParam ngcpnolvm ; then
-  logit "Disabling LVM due to ngcpnolvm boot option"
-  LVM=false
-fi
-
-case "$SP_VERSION" in
-  2.*)
-    logit "Disabling LVM due to SP_VERSION [$SP_VERSION] matching 2.*"
-    LVM=false
-    ;;
-esac
-
-case "$SP_VERSION" in
-  2.*|3.0|3.1|mr3.2*)
-    FILESYSTEM="ext3"
-    logit "Using filesystem $FILESYSTEM for sip:provider release ${SP_VERSION}"
-    ;;
-esac
-
-# allow forcing LVM mode
-if checkBootParam ngcplvm ; then
-  logit "Enabling LVM due to ngcplvm boot option"
-  LVM=true
-fi
-
-if checkBootParam ngcphalt ; then
-  HALT=true
-fi
-
-if checkBootParam ngcpreboot ; then
-  REBOOT=true
-fi
-
-if checkBootParam vagrant ; then
-  VAGRANT=true
-fi
-
-if checkBootParam lowperformance ; then
-  ADJUST_FOR_LOW_PERFORMANCE=true
-fi
-
-if checkBootParam enablevmservices ; then
-  ENABLE_VM_SERVICES=true
-fi
-
-if checkBootParam ngcpsystemd ; then
-  logit "Enabling systemd support as requested via boot option ngcpsystemd"
-  SYSTEMD=true
-fi
-
-if checkBootParam ngcpnonwrecfg ; then
-  logit "Disabling reconfig network as requested via boot option ngcpnonwrecfg"
-  RESTART_NETWORK=false
-fi
-
-if checkBootParam debianrepo ; then
-  DEBIAN_REPO_HOST=$(getBootParam debianrepo)
-fi
-
-if checkBootParam sipwiserepo ; then
-  SIPWISE_REPO_HOST=$(getBootParam sipwiserepo)
-fi
-## }}}
-
-## interactive mode {{{
-# support command line options, overriding autodetected defaults
-INTERACTIVE=true
-
-if [ -n "$NETSCRIPT" ] ; then
-  echo "Automatic deployment via bootoption netscript detected."
-  INTERACTIVE=false
-fi
-
-usage() {
-  echo "$0 - automatically deploy Debian ${DEBIAN_RELEASE} and (optionally) ngcp ce/pro.
-
-Control installation parameters:
-
-  ngcppro          - install Pro Edition
-  ngcpsp1          - install first node (Pro Edition only)
-  ngcpsp2          - install second node (Pro Edition only)
-  ngcpce           - install CE Edition
-  ngcpcrole=...    - server role (Carrier)
-  ngcpcmaster=...  - IP of master server (Carrier)
-  ngcpvers=...     - install specific SP/CE version
-  nongcp           - do not install NGCP but install plain Debian only
-  noinstall        - do not install neither Debian nor NGCP
-  ngcpinst         - force usage of NGCP installer
-  ngcpinstvers=... - use specific NGCP installer version
-  debianrepo=...   - hostname of Debian APT repository mirror
-  sipwiserepo=...  - hostname of Sipwise APT repository mirror
-
-Control target system:
-
-  ngcpnw.dhcp      - use DHCP as network configuration in installed system
-  ngcphostname=... - hostname of installed system (defaults to ngcp/sp[1,2])
-                     NOTE: do NOT use when installing Pro Edition!
-  ngcpeiface=...   - external interface device (defaults to eth0)
-  ngcpip1=...      - IP address of first node
-  ngcpip2=...      - IP address of second node
-  ngcpnetmask=...  - netmask of ha_int interface
-  ngcpeaddr=...    - Cluster IP address
-
-The command line options correspond with the available bootoptions.
-Command line overrides any present bootoption.
-
-Usage examples:
-
-  # ngcp-deployment ngcpce ngcpnw.dhcp
-
-  # netcardconfig # configure eth0 with static configuration
-  # ngcp-deployment ngcppro ngcpsp1
-
-  # netcardconfig # configure eth0 with static configuration
-  # ngcp-deployment ngcppro ngcpsp2
-"
-}
-
-for param in $* ; do
-  case $param in
-    *-h*|*--help*|*help*) usage ; exit 0;;
-    *ngcpsp1*) ROLE=sp1 ; TARGET_HOSTNAME=sp1; PRO_EDITION=true; CE_EDITION=false ; NGCP_INSTALLER=true ;;
-    *ngcpsp2*) ROLE=sp2 ; TARGET_HOSTNAME=sp2; PRO_EDITION=true; CE_EDITION=false ; NGCP_INSTALLER=true ;;
-    *ngcppro*) PRO_EDITION=true; CE_EDITION=false ; NGCP_INSTALLER=true ;;
-    *ngcpce*) PRO_EDITION=false; CE_EDITION=true ; TARGET_HOSTNAME=spce ; ROLE='' ; NGCP_INSTALLER=true ;;
-    *ngcpvers=*) SP_VERSION=$(echo $param | sed 's/ngcpvers=//');;
-    *nongcp*) NGCP_INSTALLER=false;;
-    *nodebian*) DEBIAN_INSTALLER=false;; # TODO
-    *noinstall*) NGCP_INSTALLER=false; DEBIAN_INSTALLER=false;;
-    *ngcpinst*) NGCP_INSTALLER=true;;
-    *ngcphostname=*) TARGET_HOSTNAME=$(echo $param | sed 's/ngcphostname=//');;
-    *ngcpeiface=*) EIFACE=$(echo $param | sed 's/ngcpeiface=//');;
-    *ngcpeaddr=*) EADDR=$(echo $param | sed 's/ngcpeaddr=//');;
-    *ngcpip1=*) IP1=$(echo $param | sed 's/ngcpip1=//');;
-    *ngcpip2=*) IP2=$(echo $param | sed 's/ngcpip2=//');;
-    *ngcpnetmask=*) INTERNAL_NETMASK=$(echo $param | sed 's/ngcpnetmask=//');;
-    *ngcpmcast=*) MCASTADDR=$(echo $param | sed 's/ngcpmcast=//');;
-    *ngcpcrole=*) CROLE=$(echo $param | sed 's/ngcpcrole=//');;
-    *ngcpcmaster=*) CMASTER=$(echo $param | sed 's/ngcpcmaster=//');;
-    *ngcpnw.dhcp*) DHCP=true;;
-    *ngcphav3*) LINUX_HA3=true; PRO_EDITION=true;;
-    *ngcpnobonding*) BONDING=false;;
-    *ngcpbonding*) BONDING=true;;
-    *ngcphalt*) HALT=true;;
-    *ngcpreboot*) REBOOT=true;;
-    *vagrant*) VAGRANT=true;;
-    *lowperformance*) ADJUST_FOR_LOW_PERFORMANCE=true;;
-    *enablevmservices*) ENABLE_VM_SERVICES=true;;
-  esac
-  shift
-done
-
-if ! "$NGCP_INSTALLER" ; then
-  PRO_EDITION=false
-  CE_EDITION=false
-  unset ROLE
-fi
-
-set_deploy_status "grml_debootstrap_upgrade"
-grml_debootstrap_upgrade
-
-set_deploy_status "fai_upgrade"
-fai_upgrade
-
-if "$NGCP_INSTALLER" ; then
-  set_deploy_status "ensure_augtool_present"
-  ensure_augtool_present
-fi
-
-set_deploy_status "getconfig"
-
-# when using ip=....:$HOSTNAME:eth0:off file /etc/hosts doesn't contain the
-# hostname by default, avoid warning/error messages in the host system
-# and use it for IP address check in pro edition
-if [ -z "$TARGET_HOSTNAME" ] ; then
-  if "$PRO_EDITION" ; then
-    TARGET_HOSTNAME="$ROLE"
-  fi
-
-  if "$CE_EDITION" ; then
-    TARGET_HOSTNAME="spce"
-  fi
-
-  # if we don't install ngcp ce/pro but
-  # $HOSTNAME is set via ip=.... then
-  # take it, otherwise fall back to safe default
-  if [ -z "$TARGET_HOSTNAME" ] ; then
-    if [ -n "$HOSTNAME" ] ; then
-      TARGET_HOSTNAME="$HOSTNAME"
-    else
-      TARGET_HOSTNAME="debian"
-    fi
-  fi
-fi
-
-# get install device from "ip=<client-ip:<srv-ip>:..." boot arg
-if checkBootParam ip ; then
-  declare -A IP_ARR
-  if loadNfsIpArray IP_ARR $(getBootParam ip) ; then
-    INSTALL_DEV=${IP_ARR[device]}
-  fi
-fi
-
-# set reasonable install device from other source
-if [ -z "$INSTALL_DEV" ] ; then
-  if [ -n "$EIFACE" ] ; then
-    INSTALL_DEV=$EIFACE
-  else
-    INSTALL_DEV=$DEFAULT_INSTALL_DEV
-  fi
-fi
-INSTALL_IP="$(ifdata -pa $INSTALL_DEV)"
-logit "INSTALL_IP is $INSTALL_IP"
-
-# if the default network device (eth0) is unconfigured try to retrieve configuration from eth1
-if [ "$INSTALL_IP" = "NON-IP" ] && [ "$INSTALL_DEV" = "$DEFAULT_INSTALL_DEV" ] ; then
-  logit "Falling back to device eth1 for INSTALL_IP because $DEFAULT_INSTALL_DEV is unconfigured"
-  INSTALL_IP="$(ifdata -pa eth1)"
-  logit "INSTALL_IP is $INSTALL_IP"
-fi
-
-# final external device and IP are same as installation
-[ -n "$EXTERNAL_DEV" ] || EXTERNAL_DEV=$INSTALL_DEV
-[ -n "$EXTERNAL_IP" ] || EXTERNAL_IP=$INSTALL_IP
-
-# hopefully set via bootoption/cmdline,
-# otherwise fall back to hopefully-safe-defaults
-# make sure the internal device (configured later) is not statically assigned,
-# since when booting with ip=....eth1:off then the internal device needs to be eth0
-if "$PRO_EDITION" ; then
-  if [ -z "$INTERNAL_DEV" ] ; then
-    INTERNAL_DEV='eth1'
-    if [[ "$EXTERNAL_DEV" = "eth1" ]] ; then
-      INTERNAL_DEV='eth0'
-    fi
-  fi
-
-  # needed for carrier
-  if "$RETRIEVE_MGMT_CONFIG" ; then
-    logit "Retrieving ha_int IPs configuration from management server"
-    wget --timeout=30 -O "/tmp/hosts" "${MANAGEMENT_IP}:3000/hostconfig/${TARGET_HOSTNAME}"
-    IP1=$(awk '/sp1/ { print $1 }' /tmp/hosts) || IP1=$DEFAULT_IP1
-    IP2=$(awk '/sp2/ { print $1 }' /tmp/hosts) || IP2=$DEFAULT_IP2
-
-    wget --timeout=30 -O "/tmp/interfaces" "${MANAGEMENT_IP}:3000/nwconfig/${TARGET_HOSTNAME}"
-    INTERNAL_NETMASK=$(grep "$INTERNAL_DEV inet" -A2 /tmp/interfaces | awk '/netmask/ { print $2 }') \
-      || INTERNAL_NETMASK=$DEFAULT_INTERNAL_NETMASK
-    logit "ha_int sp1: $IP1 sp2: $IP2 netmask: $INTERNAL_NETMASK"
-  fi
-
-  [ -n "$IP1" ] || IP1=$DEFAULT_IP1
-  [ -n "$IP2" ] || IP2=$DEFAULT_IP2
-  case "$ROLE" in
-    sp1) INTERNAL_IP=$IP1 ;;
-    sp2) INTERNAL_IP=$IP2 ;;
-  esac
-  [ -n "$INTERNAL_NETMASK" ] || INTERNAL_NETMASK=$DEFAULT_INTERNAL_NETMASK
-  [ -n "$MCASTADDR" ] || MCASTADDR=$DEFAULT_MCASTADDR
-
-  logit "ha_int sp1: $IP1 sp2: $IP2 netmask: $INTERNAL_NETMASK"
-fi
-
-[ -n "$EIFACE" ] || EIFACE=$INSTALL_DEV
-[ -n "$EADDR" ] || EADDR=$INSTALL_IP
-
-# needed as environment vars for ngcp-installer
-if "$PRO_EDITION" ; then
-  export CROLE
-  export ROLE
-  export IP1
-  export IP2
-  export EADDR
-  export EIFACE
-  export MCASTADDR
-  export DHCP
-else
-  export EIFACE
-  export DHCP
-fi
-
-if "$CE_EDITION" ; then
-  case "$SP_VERSION" in
-    # we do not have a local mirror for lenny, so disable it
-    2.1)     DEBIAN_RELEASE="lenny" ;;
-    2.2)     DEBIAN_RELEASE="squeeze" ;;
-    2.4)     DEBIAN_RELEASE="squeeze" ;;
-    2.5)     DEBIAN_RELEASE="squeeze" ;;
-    2.6-rc1) DEBIAN_RELEASE="squeeze" ;;
-    2.6-rc2) DEBIAN_RELEASE="squeeze" ;;
-    2.6)     DEBIAN_RELEASE="squeeze" ;;
-    2.7-rc2) DEBIAN_RELEASE="squeeze" ;;
-    2.7-rc3) DEBIAN_RELEASE="squeeze" ;;
-    2.7)     DEBIAN_RELEASE="squeeze" ;;
-    2.8)     DEBIAN_RELEASE="squeeze" ;;
-  esac
-fi
-
-set_deploy_status "settings"
-
-### echo settings
-[ -n "$SP_VERSION" ] && SP_VERSION_STR=$SP_VERSION || SP_VERSION_STR="<latest>"
-
-echo "Deployment Settings:
-
-  Install ngcp:      $NGCP_INSTALLER"
-
-if "$CE_EDITION" ; then
-  echo "  sip:provider:      CE"
-elif "$PRO_EDITION" ; then
-  echo "  sip:provider:      PRO"
-fi
-
-echo "
-  Target disk:       /dev/$DISK
-  Target Hostname:   $TARGET_HOSTNAME
-  Installer version: $SP_VERSION_STR
-  Install NW iface:  $INSTALL_DEV
-  Install IP:        $INSTALL_IP
-  Use DHCP in host:  $DHCP
-
-  Installing in chassis? $CHASSIS
-
-" | tee -a /tmp/installer-settings.txt
-
-if "$PRO_EDITION" ; then
-  echo "
-  Host Role:         $ROLE
-  Host Role Carrier: $CROLE
-  Profile:           $PROFILE
-  Master Server:     $CMASTER
-
-  External NW iface: $EXTERNAL_DEV
-  Ext host IP:       $EXTERNAL_IP
-  Ext cluster iface: $EIFACE
-  Ext cluster IP:    $EADDR
-  Multicast addr:    $MCASTADDR
-  Internal NW iface: $INTERNAL_DEV
-  Int sp1 host IP:   $IP1
-  Int sp2 host IP:   $IP2
-  Int netmask:       $INTERNAL_NETMASK
-" | tee -a /tmp/installer-settings.txt
-fi
-
-if "$INTERACTIVE" ; then
-  echo "WARNING: Execution will override any existing data!"
-  echo "Settings OK? y/N"
-  read a
-  if [[ "$a" != "y" ]] ; then
-    echo "Exiting as requested."
-    exit 2
-  fi
-  unset a
+if [ -z "$SP_VERSION" ] ; then
+  MSG="ngcp version is unspecified, assuming master/trunk therefore."
+  SP_VERSION="master"
+elif [ "$SP_VERSION" = "trunk" ] ; then
+  SP_VERSION="master"
 fi
-## }}}
 
-##### all parameters set #######################################################
-
-set_deploy_status "start"
-
-# measure time of installation procedure - everyone loves stats!
-start_seconds=$(cut -d . -f 1 /proc/uptime)
-
-if "$LOGO" ; then
-  disable_trace
-  GRML_INFO=$(cat /etc/grml_version)
-  IP_INFO=$(ip-screen)
-  CPU_INFO=$(lscpu | awk '/^CPU\(s\)/ {print $2}')
-  RAM_INFO=$(/usr/bin/gawk '/MemTotal/{print $2}' /proc/meminfo)
-  DATE_INFO=$(date)
-  # color
+display_logo() {
   echo -ne "\ec\e[1;32m"
   clear
-  #print logo
-  echo "+++ Grml-Sipwise Deployment +++"
-  echo ""
-  echo "$GRML_INFO"
-  echo "Host IP(s): $IP_INFO | Deployment version: $SCRIPT_VERSION"
-  echo "$CPU_INFO CPU(s) | ${RAM_INFO}kB RAM | $CHASSIS"
+  echo "### This deployment script version is OUTDATED. ### "
   echo ""
-  echo "Install ngcp: $NGCP_INSTALLER | Install pro: $PRO_EDITION [$ROLE|$CROLE] | Install ce: $CE_EDITION"
-  echo "Installing $SP_VERSION_STR platform | Debian: $DEBIAN_RELEASE"
-  echo "Install IP: $INSTALL_IP | Started deployment at $DATE_INFO"
-  # number of lines
+  echo "Please use an up2date version of the install CD/deployment system."
+  [ -n "$MSG" ] && echo "$MSG"
+  echo "Downloading + executing deployment script for ngcp $SP_VERSION in $TIMEOUT seconds."
   echo -ne "\e[10;0r"
-  # reset color
   echo -ne "\e[9B\e[1;m"
-  enable_trace
-fi
-
-if "$PRO_EDITION" ; then
-   # internal network (default on eth1)
-   if ifconfig "$INTERNAL_DEV" &>/dev/null ; then
-     ifconfig "$INTERNAL_DEV" $INTERNAL_IP netmask $INTERNAL_NETMASK
-   else
-     die "Error: no $INTERNAL_DEV NIC found, can not deploy internal network. Exiting."
-   fi
-
-  # ipmi on IBM hardware
-  if ifconfig usb0 &>/dev/null ; then
-    ifconfig usb0 169.254.1.102 netmask 255.255.0.0
-  fi
-fi
-
-set_deploy_status "diskverify"
-
-# TODO - hardcoded for now, to avoid data damage
-check_for_supported_disk() {
-  if grep -q 'ServeRAID' /sys/block/${DISK}/device/model ; then
-    return 0
-  fi
-
-  # IBM System x3250 M3
-  if grep -q 'Logical Volume' /sys/block/${DISK}/device/model && \
-    grep -q "LSILOGIC" /sys/block/${DISK}/device/vendor ; then
-    return 0
-  fi
-
-  # IBM System HS23 LSISAS2004
-  if grep -q 'Logical Volume' /sys/block/${DISK}/device/model && \
-    grep -q "LSI" /sys/block/${DISK}/device/vendor ; then
-    return 0
-  fi
-
-  # PERC H700, PERC H710,...
-  if grep -q 'PERC' /sys/block/${DISK}/device/model && \
-    grep -q "DELL" /sys/block/${DISK}/device/vendor ; then
-    return 0
-  fi
-
-  # proxmox on blade, internal system
-  if grep -q 'COMSTAR' /sys/block/${DISK}/device/model && \
-    grep -q "OI" /sys/block/${DISK}/device/vendor ; then
-    FIRMWARE_PACKAGES="$FIRMWARE_PACKAGES firmware-qlogic"
-    return 0
-  fi
-
-  # no match so far?
-  return 1
 }
 
-# run in according environment only
-if [ -n "$TARGET_DISK" ] ; then
-  logit "Skipping check for supported disk as TARGET_DISK variable is set."
-else
-  if [[ $(imvirt 2>/dev/null) == "Physical" ]] ; then
-
-    if ! check_for_supported_disk ; then
-      die "Error: /dev/${DISK} does not look like a VirtIO, ServeRAID, LSILOGIC or PowerEdge disk/controller. Exiting to avoid possible data damage."
-    fi
-
-  else
-    # make sure it runs only within qemu/kvm
-    if [[ "$DISK" == "vda" ]] && readlink -f /sys/block/vda/device | grep -q 'virtio' ; then
-      echo "Looks like a virtio disk, ok."
-    elif grep -q 'QEMU HARDDISK' /sys/block/${DISK}/device/model ; then
-      echo "Looks like a QEMU harddisk, ok."
-    elif grep -q 'VBOX HARDDISK' /sys/block/${DISK}/device/model ; then
-      echo "Looks like a VBOX harddisk, ok."
-    elif grep -q 'Virtual disk' /sys/block/${DISK}/device/model && [[ $(imvirt) == "VMware ESX Server" ]] ; then
-      echo "Looks like a VMware ESX Server harddisk, ok."
-    else
-      die "Error: /dev/${DISK} does not look like a virtual disk. Exiting to avoid possible data damage. Note: imvirt output is $(imvirt)"
-    fi
-  fi
-fi
-
-# relevant only while deployment, will be overriden later
-if [ -n "$HOSTNAME" ] ; then
-  cat > /etc/hosts << EOF
-127.0.0.1       grml    localhost
-::1     ip6-localhost ip6-loopback grml
-fe00::0 ip6-localnet
-ff00::0 ip6-mcastprefix
-ff02::1 ip6-allnodes
-ff02::2 ip6-allrouters
-ff02::3 ip6-allhosts
-
-127.0.0.1 $ROLE $HOSTNAME
-$INSTALL_IP $ROLE $HOSTNAME
-EOF
-fi
-
-# remote login ftw
-/etc/init.d/ssh start >/dev/null &
-echo "root:sipwise" | chpasswd
-
-## partition disk
-set_deploy_status "disksetup"
-
-# 2000GB = 2097152000 blocks in /proc/partitions - so make a rough estimation
-if [ $(awk "/ ${DISK}$/ {print \$3}" /proc/partitions) -gt 2000000000 ] ; then
-  TABLE=gpt
-else
-  TABLE=msdos
-fi
-
-if "$LVM" ; then
-  # make sure lvcreate understands the --yes option
-  lv_create_opts=''
-  lvm_version=$(dpkg-query -W -f='${Version}\n' lvm2)
-  if dpkg --compare-versions "$lvm_version" lt 2.02.106 ; then
-    logit "Installed lvm2 version ${lvm_version} doesn't need the '--yes' workaround."
-  else
-    logit "Enabling '--yes' workaround for lvm2 version ${lvm_version}."
-    lv_create_opts='lvcreateopts="--yes"'
-  fi
-
-  if "$NGCP_INSTALLER" ; then
-    VG_NAME="ngcp"
-  else
-    VG_NAME="vg0"
-  fi
-
-  cat > /tmp/partition_setup.txt << EOF
-disk_config ${DISK} disklabel:${TABLE} bootable:1
-primary -       4096-   -       -
-
-disk_config lvm
-vg ${VG_NAME}       ${DISK}1
-${VG_NAME}-root     /       -95%      ext3 rw
-${VG_NAME}-swap     swap    RAM:50%   swap sw $lv_create_opts
-EOF
-
-  # make sure setup-storage doesn't fail if LVM is already present
-  dd if=/dev/zero of=/dev/${DISK} bs=1M count=1
-  blockdev --rereadpt /dev/${DISK}
-
-  export LOGDIR='/tmp/setup-storage'
-  mkdir -p $LOGDIR
-
-  # /usr/lib/fai/fai-disk-info is available as of FAI 4.0,
-  # older versions shipped /usr/lib/fai/disk-info which doesn't
-  # support the partition setup syntax we use in our setup
-  if ! [ -x /usr/lib/fai/fai-disk-info ] ; then
-    die "You are using an outdated ISO, please update it to have fai-setup-storage >=4.0.6 available."
-  fi
-
-  export disklist=$(/usr/lib/fai/fai-disk-info | sort)
-  PATH=/usr/lib/fai:${PATH} setup-storage -f /tmp/partition_setup.txt -X || die "Failure during execution of setup-storage"
-
-  # used later by installer
-  ROOT_FS="/dev/mapper/${VG_NAME}-root"
-  SWAP_PARTITION="/dev/mapper/${VG_NAME}-swap"
-
-else # no LVM (default)
-  parted -s /dev/${DISK} mktable "$TABLE" || die "Failed to set up partition table"
-  # hw-raid with rootfs + swap partition
-  parted -s /dev/${DISK} 'mkpart primary ext4 2048s 95%' || die "Failed to set up primary partition"
-  parted -s /dev/${DISK} 'mkpart primary linux-swap 95% -1' || die "Failed to set up swap partition"
-  sync
-
-  # used later by installer
-  ROOT_FS="/dev/${DISK}1"
-  SWAP_PARTITION="/dev/${DISK}2"
-
-  echo "Initialising swap partition $SWAP_PARTITION"
-  mkswap -L ngcp-swap "$SWAP_PARTITION" || die "Failed to initialise swap partition"
-
-  # for later usage in /etc/fstab use /dev/disk/by-label/ngcp-swap instead of /dev/${DISK}2
-  SWAP_PARTITION="/dev/disk/by-label/ngcp-swap"
-fi
-
-# otherwise e2fsck fails with "need terminal for interactive repairs"
-echo FSCK=no >>/etc/debootstrap/config
-
-# package selection
-cat > /etc/debootstrap/packages << EOF
-# addons: packages which d-i installs but debootstrap doesn't
-eject
-grub-pc
-pciutils
-usbutils
-ucf
-# locales -> but we want locales-all instead:
-locales-all
-
-# required e.g. for "Broadcom NetXtreme II BCM5709S Gigabit Ethernet"
-# lacking the firmware will result in non-working network on
-# too many physical server systems, so just install it by default
-firmware-bnx2
-firmware-bnx2x
-
-# MT#7999 ethtool used in bonding
-ethtool
-
-# support acpi (d-i installs them as well)
-acpi acpid acpi-support-base
-
-# be able to login on the system, even if just installing plain Debian
-openssh-server
-
-# packages d-i installs but we ignore/skip:
-#discover
-#gettext-base
-#installation-report
-#kbd
-#laptop-detect
-#os-prober
-EOF
-
-# MT#8813 The linux-headers-2.6-amd64 package doesn't exist in jessie and newer
-case "$DEBIAN_RELEASE" in
-  lenny|squeeze|wheezy)
-    echo  "Adding linux-headers-2.6-amd64 package (because we're installing ${DEBIAN_RELEASE})"
-    logit "Adding linux-headers-2.6-amd64 package (because we're installing ${DEBIAN_RELEASE})"
-    cat >> /etc/debootstrap/packages << EOF
-# required for dkms
-linux-headers-2.6-amd64
-EOF
-    ;;
-  *)
-    echo  "Adding linux-headers-amd64 package (because we're installing ${DEBIAN_RELEASE})"
-    logit "Adding linux-headers-amd64 package (because we're installing ${DEBIAN_RELEASE})"
-    cat >> /etc/debootstrap/packages << EOF
-# required for dkms
-linux-headers-amd64
-EOF
-    ;;
-esac
-
-if "$LVM" ; then
-  cat >> /etc/debootstrap/packages << EOF
-# support LVM
-lvm2
-EOF
-fi
-
-if "$VLAN" ; then
-  cat >> /etc/debootstrap/packages << EOF
-# support bridge / bonding / vlan
-bridge-utils
-ifenslave-2.6
-vlan
-EOF
-fi
-
-if [ -n "$PUPPET" ] ; then
-  cat >> /etc/debootstrap/packages << EOF
-# for interal use at sipwise
-openssh-server
-puppet
-EOF
-fi
-
-if [ -n "$FIRMWARE_PACKAGES" ] ; then
-  cat >> /etc/debootstrap/packages << EOF
-# firmware packages for hardware specific needs
-$FIRMWARE_PACKAGES
-EOF
-fi
-
-install_sipwise_key
-
-mkdir -p /etc/debootstrap/pre-scripts/
-cat > /etc/debootstrap/pre-scripts/install-sipwise-key.sh << EOF
-#!/bin/bash
-# installed via deployment.sh
-cp /etc/apt/trusted.gpg.d/sipwise.gpg "\${MNTPOINT}"/etc/apt/trusted.gpg.d/
-EOF
-chmod 775 /etc/debootstrap/pre-scripts/install-sipwise-key.sh
-
-if "$SYSTEMD" ; then
-  logit "Enabling systemd installation via grml-debootstrap"
-  mkdir -p /etc/debootstrap/scripts/
-  cat > /etc/debootstrap/scripts/systemd.sh << EOF
-#!/bin/bash
-# installed via deployment.sh
-
-echo "systemd.sh: mounting rootfs $ROOT_FS to $TARGET"
-mount "$ROOT_FS" "$TARGET"
-
-echo "systemd.sh: enabling ${DEBIAN_RELEASE} backports"
-echo deb http://${DEBIAN_REPO_HOST}/debian/ ${DEBIAN_RELEASE}-backports main contrib non-free >> ${TARGET}/etc/apt/sources.list.d/systemd.list
-chroot $TARGET apt-get update
-
-echo "systemd.sh: installing systemd"
-echo 'Yes, do as I say!' | chroot $TARGET apt-get -t ${DEBIAN_RELEASE}-backports --force-yes -y install systemd-sysv sysvinit-
-
-echo "systemd.sh: verifying that acpid is enabled"
-if ! chroot $TARGET systemctl is-enabled acpid.service ; then
-  echo "acpid service is disabled, enabling"
-  chroot $TARGET systemctl enable acpid.service
-fi
-
-echo "systemd.sh: unmounting $TARGET again"
-umount "$TARGET"
-EOF
-  chmod 775 /etc/debootstrap/scripts/systemd.sh
-fi
-
-# drop this once we mirror Debian/jessie
-if [ "$DEBIAN_RELEASE" = "jessie" ] ; then
-  MIRROR='http://debian.inode.at/debian/'
-  KEYRING='/usr/share/keyrings/debian-archive-keyring.gpg'
-else
-  # NOTE: we use the debian.sipwise.com CNAME by intention here
-  # to avoid conflicts with apt-pinning, preferring deb.sipwise.com
-  # over official Debian
-  MIRROR="http://${DEBIAN_REPO_HOST}/debian/"
-  SEC_MIRROR="http://${DEBIAN_REPO_HOST}/debian-security/"
-  KEYRING='/etc/apt/trusted.gpg.d/sipwise.gpg'
-fi
-
-set_deploy_status "debootstrap"
-
-mkdir -p /etc/debootstrap/etc/apt/
-logit "Setting up /etc/debootstrap/etc/apt/sources.list"
-cat > /etc/debootstrap/etc/apt/sources.list << EOF
-# Set up via deployment.sh for grml-debootstrap usage
-deb ${MIRROR} ${DEBIAN_RELEASE} main contrib non-free
-EOF
-
-# drop this once Debian/jessie has security support
-if [ -n "$SEC_MIRROR" ] ; then
-  echo "deb ${SEC_MIRROR} ${DEBIAN_RELEASE}-security main contrib non-free" >> /etc/debootstrap/etc/apt/sources.list
-else
-  echo  "Warning: security mirror variable SEC_MIRROR is unset, not enabling security repository for $DEBIAN_RELEASE"
-  logit "Warning: security mirror variable SEC_MIRROR is unset, not enabling security repository for $DEBIAN_RELEASE"
-fi
-
-echo "deb ${MIRROR} ${DEBIAN_RELEASE}-updates main contrib non-free" >> /etc/debootstrap/etc/apt/sources.list
-
-
-
-# install Debian
-echo y | grml-debootstrap \
-  --arch "${ARCH}" \
-  --grub /dev/${DISK} \
-  --filesystem "${FILESYSTEM}" \
-  --hostname "${TARGET_HOSTNAME}" \
-  --mirror "$MIRROR" \
-  --debopt "--keyring=${KEYRING}" $EXTRA_DEBOOTSTRAP_OPTS \
-  --keep_src_list \
-  --defaultinterfaces \
-  -r "$DEBIAN_RELEASE" \
-  -t "$ROOT_FS" \
-  --password 'sipwise' 2>&1 | tee -a /tmp/grml-debootstrap.log
-
-if [ ${PIPESTATUS[1]} -ne 0 ]; then
-  die "Error during installation of Debian ${DEBIAN_RELEASE}. Find details via: mount $ROOT_FS $TARGET ; ls $TARGET/debootstrap/*.log"
-fi
-
-sync
-mount "$ROOT_FS" "$TARGET"
-
-# MT#7805
-if "$NGCP_INSTALLER" ; then
-  cat << EOT | augtool --root="$TARGET"
-insert opt after /files/etc/fstab/*[file="/"]/opt[last()]
-set /files/etc/fstab/*[file="/"]/opt[last()] noatime
-save
-EOT
-fi
-
-# provide useable swap partition
-echo "Enabling swap partition $SWAP_PARTITION via /etc/fstab"
-cat >> "${TARGET}/etc/fstab" << EOF
-$SWAP_PARTITION                      none           swap       sw,pri=0  0  0
-EOF
-
-# removals: packages which debootstrap installs but d-i doesn't
-chroot $TARGET apt-get --purge -y remove \
-ca-certificates openssl tcpd xauth
-
-if "$PRO_EDITION" ; then
-  echo "Pro edition: keeping firmware* packages."
-else
-  chroot $TARGET apt-get --purge -y remove \
-  firmware-linux firmware-linux-free firmware-linux-nonfree || true
-fi
-
-# get rid of automatically installed packages
-chroot $TARGET apt-get --purge -y autoremove
-
-# purge removed packages
-if [[ $(chroot $TARGET dpkg --list | awk '/^rc/ {print $2}') != "" ]] ; then
-  chroot $TARGET dpkg --purge $(chroot $TARGET dpkg --list | awk '/^rc/ {print $2}')
-fi
-
-# make sure `hostname` and `hostname --fqdn` return data from chroot
-grml-chroot $TARGET /etc/init.d/hostname.sh
-
-# make sure installations of packages works, will be overriden later again
-cat > $TARGET/etc/hosts << EOF
-127.0.0.1       localhost
-127.0.0.1       $HOSTNAME
-
-::1             localhost ip6-localhost ip6-loopback
-fe00::0         ip6-localnet
-ff00::0         ip6-mcastprefix
-ff02::1         ip6-allnodes
-ff02::2         ip6-allrouters
-EOF
-
-# needed for carrier
-if "$RETRIEVE_MGMT_CONFIG" ; then
-  echo "Retrieving /etc/hosts configuration from management server"
-  wget --timeout=30 -O "${TARGET}/etc/hosts" "${MANAGEMENT_IP}:3000/hostconfig/$(cat ${TARGET}/etc/hostname)"
-  # required for bootstrapping remote origin in ngcpcfg carrier setup
-  echo "Retrieving /etc/ngcp_mgmt_node file from management server"
-  wget --timeout=30 -O "${TARGET}/etc/ngcp_mgmt_node" "${MANAGEMENT_IP}:3000/mgmt"
-  echo "mgmt_node=$(cat ${TARGET}/etc/ngcp_mgmt_node)"
-fi
-
-if "$PRO_EDITION" ; then
-  if [ -n "$CROLE" ] ; then
-    echo "Writing $CROLE to /etc/ngcp_ha_role"
-    echo $CROLE > $TARGET/etc/ngcp_ha_role
-  else
-    echo "No role definition set, not creating /etc/ngcp_ha_role"
-  fi
-
-  if [ -n "$CMASTER" ] ; then
-    echo "Writing $CMASTER to /etc/ngcp_ha_master"
-    echo $CMASTER > $TARGET/etc/ngcp_ha_master
-  else
-    echo "No mgmgt master set, not creating /etc/ngcp_ha_master"
-  fi
-fi
-
-if "$PRO_EDITION" && [[ $(imvirt) != "Physical" ]] ; then
-  echo "Generating udev persistent net rules."
-  INT_MAC=$(udevadm info -a -p /sys/class/net/${INTERNAL_DEV} | awk -F== '/ATTR{address}/ {print $2}')
-  EXT_MAC=$(udevadm info -a -p /sys/class/net/${EXTERNAL_DEV} | awk -F== '/ATTR{address}/ {print $2}')
-
-  if [ "$INT_MAC" = "$EXT_MAC" ] ; then
-    die "Error: MAC address for $INTERNAL_DEV is same as for $EXTERNAL_DEV"
-  fi
-
-  cat > $TARGET/etc/udev/rules.d/70-persistent-net.rules << EOF
-## Generated by Sipwise deployment script
-SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}==$INT_MAC, ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="$INTERNAL_DEV"
-SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}==$EXT_MAC, ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="$EXTERNAL_DEV"
-EOF
-fi
-
-# needs to be executed *after* udev rules have been set up,
-# otherwise we get duplicated MAC address<->device name mappings
-if "$RETRIEVE_MGMT_CONFIG" ; then
-  echo "Retrieving network configuration from management server"
-  wget --timeout=30 -O /etc/network/interfaces "${MANAGEMENT_IP}:3000/nwconfig/$(cat ${TARGET}/etc/hostname)"
-
-  cp /etc/network/interfaces "${TARGET}/etc/network/interfaces"
-fi
-
-if "$RETRIEVE_MGMT_CONFIG" && "$RESTART_NETWORK" ; then
-  # restart networking for the time being only when running either in toram mode
-  # or not booting from NFS, once we've finished the carrier setup procedure we
-  # should be able to make this as our only supported default mode and drop
-  # everything inside the 'else' statement...
-  if grep -q 'toram' /proc/cmdline || ! grep -q 'root=/dev/nfs' /proc/cmdline ; then
-    echo  'Restarting networking'
-    logit 'Restarting networking'
-    /etc/init.d/networking restart
-  else
-    # make sure we can access the management system which might be reachable
-    # through a specific VLAN only
-    ip link set dev "$INTERNAL_DEV" down # avoid conflicts with VLAN device(s)
-
-    # vlan-raw-device bond0 doesn't exist in the live environment, if we don't
-    # adjust it accordingly for our environment the vlan device(s) can't be
-    # brought up
-    # note: we do NOT modify the /e/n/i file from $TARGET here by intention
-    sed -i "s/vlan-raw-device .*/vlan-raw-device eth0/" /etc/network/interfaces
-
-    for interface in $(awk '/^auto vlan/ {print $2}' /etc/network/interfaces) ; do
-      echo "Bringing up VLAN interface $interface"
-      ifup "$interface"
-    done
-  fi # toram
-fi
-
-SIPWISE_HOME="/var/sipwise"
-adduser_sipwise() {
-  if "$NGCP_INSTALLER" ; then
-    adduser_options="--disabled-password"	# NGCP
-  else
-    adduser_options="--disabled-login"		# Debian plain
-  fi
-
-  chroot $TARGET adduser sipwise --gecos "Sipwise" --home ${SIPWISE_HOME} --shell /bin/bash $adduser_options
-}
-
-get_installer_path() {
-  if [ -z "$SP_VERSION" ] && ! $TRUNK_VERSION ; then
-    INSTALLER=ngcp-installer-latest.deb
-
-    if $PRO_EDITION ; then
-      INSTALLER_PATH="http://${SIPWISE_REPO_HOST}/sppro/"
-    else
-      INSTALLER_PATH="http://${SIPWISE_REPO_HOST}/spce/"
-    fi
-
-    return # we don't want to run any further code from this function
-  fi
-
-  # use pool directory according for ngcp release
-  if $PRO_EDITION ; then
-    if [ -n "$CROLE" ]; then
-      local installer_package='ngcp-installer-carrier'
-    else
-      local installer_package='ngcp-installer-pro'
-    fi
-    local repos_base_path="http://${SIPWISE_REPO_HOST}/sppro/${SP_VERSION}/dists/${DEBIAN_RELEASE}/main/binary-amd64/"
-    INSTALLER_PATH="http://${SIPWISE_REPO_HOST}/sppro/${SP_VERSION}/pool/main/n/ngcp-installer/"
-  else
-    local installer_package='ngcp-installer-ce'
-    local repos_base_path="http://${SIPWISE_REPO_HOST}/spce/${SP_VERSION}/dists/${DEBIAN_RELEASE}/main/binary-amd64/"
-    INSTALLER_PATH="http://${SIPWISE_REPO_HOST}/spce/${SP_VERSION}/pool/main/n/ngcp-installer/"
-  fi
-
-  # use a separate repos for trunk releases
-  if $TRUNK_VERSION ; then
-    local repos_base_path="http://${SIPWISE_REPO_HOST}/autobuild/dists/release-trunk-${DEBIAN_RELEASE}/main/binary-amd64/"
-    INSTALLER_PATH="http://${SIPWISE_REPO_HOST}/autobuild/pool/main/n/ngcp-installer/"
-  fi
-
-  wget --timeout=30 -O Packages.gz "${repos_base_path}Packages.gz"
-  # sed: display paragraphs matching the "Package: ..." string, then grab string "^Version: " and display the actual version via awk
-  # sort -u to avoid duplicates in repositories shipping the ngcp-installer-pro AND ngcp-installer-pro-ha-v3 debs
-  local version=$(zcat Packages.gz | sed "/./{H;\$!d;};x;/Package: ${installer_package}/b;d" | awk '/^Version: / {print $2}' | sort -u)
-
-  [ -n "$version" ] || die "Error: installer version for ngcp ${SP_VERSION}, Debian release $DEBIAN_RELEASE with installer package $installer_package could not be detected."
-
-  if "$PRO_EDITION" ; then
-    if [ -n "$CROLE" ]; then
-      INSTALLER="ngcp-installer-carrier_${version}_all.deb"
-    else
-      INSTALLER="ngcp-installer-pro_${version}_all.deb"
-    fi
-  else
-    INSTALLER="ngcp-installer-ce_${version}_all.deb"
-  fi
-}
-
-if "$NGCP_INSTALLER" ; then
-
-  if "$RETRIEVE_MGMT_CONFIG" ; then
-    password=sipwise
-    echo "Retrieving SSH keys from management server (using password ${password})"
-
-    mkdir -p "${TARGET}"/root/.ssh
-
-    wget --timeout=30 -O "${TARGET}"/root/.ssh/authorized_keys "${MANAGEMENT_IP}:3000/ssh/authorized_keys"
-    wget --timeout=30 -O "${TARGET}"/root/.ssh/id_rsa          "${MANAGEMENT_IP}:3000/ssh/id_rsa?password=${password}"
-    wget --timeout=30 -O "${TARGET}"/root/.ssh/id_rsa.pub      "${MANAGEMENT_IP}:3000/ssh/id_rsa_pub"
-    wget --timeout=30 -O "${TARGET}"/root/.ssh/known_hosts     "${MANAGEMENT_IP}:3000/ssh/known_hosts"
-
-    chmod 600 "${TARGET}"/root/.ssh/authorized_keys
-    chmod 600 "${TARGET}"/root/.ssh/id_rsa
-    chmod 644 "${TARGET}"/root/.ssh/id_rsa.pub
-    chmod 600 "${TARGET}"/root/.ssh/known_hosts
-
-    wget --timeout=30 -O "${TARGET}"/etc/ssh/ssh_host_dsa_key     "${MANAGEMENT_IP}:3000/ssh/host_dsa_key?password=${password}"
-    wget --timeout=30 -O "${TARGET}"/etc/ssh/ssh_host_dsa_key.pub "${MANAGEMENT_IP}:3000/ssh/host_dsa_key_pub"
-    wget --timeout=30 -O "${TARGET}"/etc/ssh/ssh_host_rsa_key     "${MANAGEMENT_IP}:3000/ssh/host_rsa_key?password=${password}"
-    wget --timeout=30 -O "${TARGET}"/etc/ssh/ssh_host_rsa_key.pub "${MANAGEMENT_IP}:3000/ssh/host_rsa_key_pub"
-
-    chmod 600 "${TARGET}"/etc/ssh/ssh_host_dsa_key
-    chmod 644 "${TARGET}"/etc/ssh/ssh_host_dsa_key.pub
-    chmod 600 "${TARGET}"/etc/ssh/ssh_host_rsa_key
-    chmod 644 "${TARGET}"/etc/ssh/ssh_host_rsa_key.pub
-  fi
-
-  # add sipwise user
-  adduser_sipwise
-
-  # set INSTALLER_PATH and INSTALLER depending on release/version
-  get_installer_path
-
-  cat > $TARGET/etc/apt/sources.list << EOF
-# Please visit /etc/apt/sources.list.d/ instead.
-EOF
-
-  cat > $TARGET/etc/apt/sources.list.d/debian.list << EOF
-## custom sources.list, deployed via deployment.sh
-
-# Debian repositories
-deb ${MIRROR} ${DEBIAN_RELEASE} main contrib non-free
-EOF
-
-# drop this once Debian/jessie has security support
-if [ -n "$SEC_MIRROR" ] ; then
-  echo "deb ${SEC_MIRROR} ${DEBIAN_RELEASE}-security main contrib non-free" >> $TARGET/etc/apt/sources.list.d/debian.list
-else
-  echo  "Warning: security mirror variable SEC_MIRROR is unset, not enabling security repository for $DEBIAN_RELEASE"
-  logit "Warning: security mirror variable SEC_MIRROR is unset, not enabling security repository for $DEBIAN_RELEASE"
-fi
-
-cat >> $TARGET/etc/apt/sources.list.d/debian.list << EOF
-deb ${MIRROR} ${DEBIAN_RELEASE}-updates main contrib non-free
-
-EOF
-
-  # support testing rc releases without providing an according installer package ahead
-  if [ -n "$AUTOBUILD_RELEASE" ] ; then
-    echo "Running installer with sources.list for $DEBIAN_RELEASE + autobuild release-$AUTOBUILD_RELEASE"
-
-    cat > $TARGET/etc/apt/sources.list.d/sipwise.list << EOF
-## custom sources.list, deployed via deployment.sh
-
-# Sipwise repositories
-deb [arch=amd64] http://${SIPWISE_REPO_HOST}/autobuild/release/release-${AUTOBUILD_RELEASE} release-${AUTOBUILD_RELEASE} main
-
-# Sipwise ${DEBIAN_RELEASE} backports
-deb [arch=amd64] http://${SIPWISE_REPO_HOST}/${DEBIAN_RELEASE}-backports/ ${DEBIAN_RELEASE}-backports main
-
-EOF
-  elif [ -n "$MRBUILD_RELEASE" ] ; then
-    echo "Running installer with sources.list for $DEBIAN_RELEASE + mr release-$MRBUILD_RELEASE"
-
-    if "$PRO_EDITION" ; then
-      cat >> $TARGET/etc/apt/sources.list.d/sipwise.list << EOF
-# Sipwise repository
-deb [arch=amd64] http://${SIPWISE_REPO_HOST}/sppro/${MRBUILD_RELEASE}/ ${DEBIAN_RELEASE} main
-#deb-src http://${SIPWISE_REPO_HOST}/sppro/${MRBUILD_RELEASE}/ ${DEBIAN_RELEASE} main
-
-EOF
-    else # CE
-      cat >> $TARGET/etc/apt/sources.list.d/sipwise.list << EOF
-# Sipwise repository
-deb [arch=amd64] http://${SIPWISE_REPO_HOST}/spce/${MRBUILD_RELEASE}/ ${DEBIAN_RELEASE} main
-#deb-src http://${SIPWISE_REPO_HOST}/spce/${MRBUILD_RELEASE}/ ${DEBIAN_RELEASE} main
-
-EOF
-    fi
-
-    cat >> $TARGET/etc/apt/sources.list.d/sipwise.list << EOF
-# Sipwise $DEBIAN_RELEASE backports
-deb [arch=amd64] http://${SIPWISE_REPO_HOST}/${DEBIAN_RELEASE}-backports/ ${DEBIAN_RELEASE}-backports main
-#deb-src http://${SIPWISE_REPO_HOST}/${DEBIAN_RELEASE}-backports/ ${DEBIAN_RELEASE}-backports main
-
-EOF
-  fi # $MRBUILD_RELEASE
-
-
-  set_deploy_status "ngcp-installer"
-
-  # install and execute ngcp-installer
-  logit "ngcp-installer: $INSTALLER"
-  INSTALLER_OPTS="TRUNK_VERSION=$TRUNK_VERSION SKIP_SOURCES_LIST=$SKIP_SOURCES_LIST ADJUST_FOR_LOW_PERFORMANCE=$ADJUST_FOR_LOW_PERFORMANCE "
-  INSTALLER_OPTS+="ENABLE_VM_SERVICES=$ENABLE_VM_SERVICES "
-  if $PRO_EDITION && ! $LINUX_HA3 ; then # HA v2
-    echo "$INSTALLER_OPTS ngcp-installer $ROLE $CROLE $IP1 $IP2 $EADDR $EIFACE" > /tmp/ngcp-installer-cmdline.log
-    cat << EOT | grml-chroot $TARGET /bin/bash
-wget ${INSTALLER_PATH}/${INSTALLER}
-dpkg -i $INSTALLER
-$INSTALLER_OPTS ngcp-installer \$ROLE \$CROLE \$IP1 \$IP2 \$EADDR \$EIFACE 2>&1 | tee -a /tmp/ngcp-installer-debug.log
-RC=\${PIPESTATUS[0]}
-if [ \$RC -ne 0 ] ; then
-  echo "Fatal error while running ngcp-installer:" >&2
-  tail -10 /tmp/ngcp-installer.log
-  exit \$RC
-fi
-EOT
-
-  elif $PRO_EDITION && $LINUX_HA3 ; then # HA v3
-    echo "$INSTALLER_OPTS ngcp-installer $ROLE $IP1 $IP2 $EADDR $EIFACE $MCASTADDR" > /tmp/ngcp-installer-cmdline.log
-    cat << EOT | grml-chroot $TARGET /bin/bash
-wget ${INSTALLER_PATH}/${INSTALLER}
-dpkg -i $INSTALLER
-$INSTALLER_OPTS ngcp-installer \$ROLE \$IP1 \$IP2 \$EADDR \$EIFACE \$MCASTADDR 2>&1 | tee -a /tmp/ngcp-installer-debug.log
-RC=\${PIPESTATUS[0]}
-if [ \$RC -ne 0 ] ; then
-  echo "Fatal error while running ngcp-installer (HA v3):" >&2
-  tail -10 /tmp/ngcp-installer.log
-  exit \$RC
-fi
-EOT
-
-  else # spce
-    echo "$INSTALLER_OPTS ngcp-installer" > /tmp/ngcp-installer-cmdline.log
-    cat << EOT | grml-chroot $TARGET /bin/bash
-wget ${INSTALLER_PATH}/${INSTALLER}
-dpkg -i $INSTALLER
-echo y | $INSTALLER_OPTS ngcp-installer 2>&1 | tee -a /tmp/ngcp-installer-debug.log
-RC=\${PIPESTATUS[1]}
-if [ \$RC -ne 0 ] ; then
-  echo "Fatal error while running ngcp-installer:" >&2
-  tail -10 /tmp/ngcp-installer.log
-  exit \$RC
-fi
-EOT
-  fi
-
-  # baby, something went wrong!
-  if [ $? -eq 0 ] ; then
-    logit "installer: success"
-  else
-    logit "installer: error"
-    die "Error during installation of ngcp. Find details at: $TARGET/tmp/ngcp-installer.log $TARGET/tmp/ngcp-installer-debug.log"
-  fi
-
-  if "$PRO_EDITION" ; then
-    # set variable to have the *other* node from the PRO setup available for ngcp-network
-    case $ROLE in
-      sp1)
-        logit "Role matching sp1"
-        if [ -n "$TARGET_HOSTNAME" ] && [[ "$TARGET_HOSTNAME" == *a ]] ; then # usually carrier env
-          logit "Target hostname is set and ends with 'a'"
-          THIS_HOST="$TARGET_HOSTNAME"
-          PEER="${TARGET_HOSTNAME%a}b"
-        else # usually PRO env
-          logit "Target hostname is not set or does not end with 'a'"
-          THIS_HOST="$ROLE"
-          PEER=sp2
-        fi
-        ;;
-      sp2)
-        logit "Role matching sp2"
-        if [ -n "$TARGET_HOSTNAME" ] && [[ "$TARGET_HOSTNAME" == *b ]] ; then # usually carrier env
-          THIS_HOST="$TARGET_HOSTNAME"
-          PEER="${TARGET_HOSTNAME%b}a"
-        else # usually PRO env
-          logit "Target hostname is not set or does not end with 'b'"
-          THIS_HOST="$ROLE"
-          PEER=sp1
-        fi
-        ;;
-      *)
-        logit "Using unsupported role: $ROLE"
-        ;;
-    esac
-  fi
-
-  if "$RETRIEVE_MGMT_CONFIG" ; then
-    if [ "$ROLE" = "sp1" ] ; then
-      password=sipwise
-
-      logit "Retrieving sipwise.cnf from management server (using password ${password})"
-      wget --timeout=30 -O "${TARGET}"/etc/mysql/sipwise.cnf "${MANAGEMENT_IP}:3000/dbconfig/sipwise_cnf?password=${password}"
-      logit "Copying sipwise.cnf to /mnt/glusterfs/shared_config"
-      chroot $TARGET cp /etc/mysql/sipwise.cnf /mnt/glusterfs/shared_config/sipwise.cnf
-
-      logit "Sync constants"
-      chroot $TARGET ngcp-sync-constants -r
-    fi
-  fi
-
-  case "$CROLE" in
-     proxy)
-        if chroot $TARGET service mysql start 2 ; then
-          logit "Configuring MySQL second instance"
-          chroot $TARGET ngcp-sync-constants -r -s
-        else
-          logit "Can't start MySQL second instance"
-        fi
-        ;;
-  esac
-
-  # we require those packages for dkms, so do NOT remove them:
-  # binutils cpp-4.3 gcc-4.3-base linux-kbuild-2.6.32
-  if grml-chroot $TARGET dkms status | grep -q ngcp-rtpengine ; then
-    rtpengine_name="ngcp-rtpengine"
-  else
-    rtpengine_name="ngcp-mediaproxy-ng"
-  fi
-  echo "Identified dkms package ${rtpengine_name}"
-
-  if ! grml-chroot $TARGET dkms status | grep -q "${rtpengine_name}" ; then
-    echo "dkms status failed [checking for ${rtpengine_name}]:" | tee -a /tmp/dkms.log
-    grml-chroot $TARGET dkms status 2>&1| tee -a /tmp/dkms.log
-  else
-    if grml-chroot $TARGET dkms status | grep -v -- '-rt-amd64' | grep -q "^${rtpengine_name}.*: installed" ; then
-      echo "${rtpengine_name} kernel package already installed, skipping" | tee -a /tmp/dkms.log
-    else
-      KERNELHEADERS=$(basename $(ls -d ${TARGET}/usr/src/linux-headers*amd64 | grep -v -- -rt-amd64 | sort -u -r -V | head -1))
-      if [ -z "$KERNELHEADERS" ] ; then
-        die "Error: no kernel headers found for building ${rtpengine_name} the kernel module."
-      fi
-
-      KERNELVERSION=${KERNELHEADERS##linux-headers-}
-      NGCPVERSION=$(grml-chroot $TARGET dkms status | grep ${rtpengine_name} | awk -F, '{print $2}' | sed 's/:.*//')
-      grml-chroot $TARGET dkms build -k $KERNELVERSION --kernelsourcedir /usr/src/$KERNELHEADERS \
-             -m $rtpengine_name -v $NGCPVERSION 2>&1 | tee -a /tmp/dkms.log
-      grml-chroot $TARGET dkms install -k $KERNELVERSION -m $rtpengine_name -v $NGCPVERSION 2>&1 | tee -a /tmp/dkms.log
-    fi
-  fi
-
-adjust_hb_device() {
-  local hb_device
-
-  if [ -n "$INTERNAL_DEV" ] ; then
-    export hb_device="$INTERNAL_DEV"
-  else
-    export hb_device="eth1" # default
-  fi
-
-  echo "Setting hb_device to ${hb_device}."
-
-  chroot $TARGET perl <<"EOF"
-use strict;
-use warnings;
-use YAML::Tiny;
-use Env qw(hb_device);
-
-my $yaml = YAML::Tiny->new;
-my $inputfile  = '/etc/ngcp-config/config.yml';
-my $outputfile = '/etc/ngcp-config/config.yml';
-
-$yaml = YAML::Tiny->read($inputfile);
-$yaml->[0]->{networking}->{hb_device} = "$hb_device";
-$yaml->write($outputfile);
-EOF
-
-  chroot $TARGET ngcpcfg commit 'setting hb_device in config.yml [via deployment process]'
-  chroot $TARGET ngcpcfg build /etc/ha.d/ha.cf
-}
-
-  if "$PRO_EDITION" ; then
-    echo "Deploying PRO edition (sp1) - adjusting heartbeat device (hb_device)."
-    adjust_hb_device
-  fi
-
-  # make sure all services are stopped
-  for service in \
-    apache2 \
-    asterisk \
-    collectd \
-    dnsmasq \
-    exim4 \
-    irqbalance \
-    kamailio-lb \
-    kamailio-proxy \
-    mediator \
-    monit \
-    mysql \
-    nfs-kernel-server \
-    ngcp-mediaproxy-ng-daemon \
-    ngcp-rate-o-mat \
-    ngcp-rtpengine-daemon \
-    ngcp-sems \
-    ntp \
-    rsyslog \
-    sems ; \
-  do
-    if [ -f $TARGET/etc/init.d/$service ] ; then
-      chroot $TARGET /etc/init.d/$service stop || true
-    fi
-  done
-
-  if [ -f $TARGET/etc/init.d/prosody ] ; then
-    # prosody's init script requires mounted /proc
-    grml-chroot $TARGET /etc/init.d/prosody stop || true
-  fi
-
-  # nuke files
-  for i in $(find "$TARGET/var/log" -type f -size +0 -not -name \*.ini 2>/dev/null); do
-    :> "$i"
-  done
-  :>$TARGET/var/run/utmp
-  :>$TARGET/var/run/wtmp
-
-  # make a backup of the installer logfiles for later investigation
-  if [ -r "${TARGET}"/tmp/ngcp-installer.log ] ; then
-    cp "${TARGET}"/tmp/ngcp-installer.log "${TARGET}"/var/log/
-  fi
-  if [ -r "${TARGET}"/tmp/ngcp-installer-debug.log ] ; then
-    cp "${TARGET}"/tmp/ngcp-installer-debug.log "${TARGET}"/var/log/
-  fi
-  if [ -r /tmp/grml-debootstrap.log ] ; then
-    cp /tmp/grml-debootstrap.log "${TARGET}"/var/log/
-  fi
-
-  echo "# deployment.sh running on $(date)" > "${TARGET}"/var/log/deployment.log
-  echo "SCRIPT_VERSION=${SCRIPT_VERSION}" >> "${TARGET}"/var/log/deployment.log
-  echo "CMD_LINE=\"${CMD_LINE}\"" >> "${TARGET}"/var/log/deployment.log
-  echo "NGCP_INSTALLER_CMDLINE=\"TRUNK_VERSION=$TRUNK_VERSION SKIP_SOURCES_LIST=$SKIP_SOURCES_LIST ngcp-installer $ROLE $IP1 $IP2 $EADDR $EIFACE $MCASTADDR\"" >> "${TARGET}"/var/log/deployment.log
-
-fi
-
-# adjust network.yml
-if "$RETRIEVE_MGMT_CONFIG" ; then
-  echo "Nothing to do (RETRIEVE_MGMT_CONFIG is set), network.yml was already set up."
-elif "$PRO_EDITION" ; then
-  # get list of available network devices (excl. some known-to-be-irrelevant ones, also see MT#8297)
-  net_devices=$(tail -n +3 /proc/net/dev | awk -F: '{print $1}'| sed "s/\s*//" | grep -ve '^vmnet' -ve '^vboxnet' -ve '^docker' -ve '^usb' | sort -u)
-
-  NETWORK_DEVICES=""
-  for network_device in $net_devices $DEFAULT_INSTALL_DEV $INTERNAL_DEV $EXTERNAL_DEV ; do
-    # avoid duplicates
-    echo "$NETWORK_DEVICES" | grep -wq "$network_device" || NETWORK_DEVICES="$NETWORK_DEVICES $network_device"
-  done
-  export NETWORK_DEVICES
-  unset net_devices
-
-  cat << EOT | grml-chroot $TARGET /bin/bash
-  if ! [ -r /etc/ngcp-config/network.yml ] ; then
-    echo '/etc/ngcp-config/network.yml does not exist'
-    exit 0
-  fi
-
-  if [ "$ROLE" = "sp1" ] ; then
-    cp /etc/ngcp-config/network.yml /etc/ngcp-config/network.yml.factory_default
-
-    ngcp-network --host=$THIS_HOST --set-interface=lo --ip=auto --netmask=auto --hwaddr=auto --ipv6='::1' --type=web_int
-    ngcp-network --host=$THIS_HOST --set-interface=$DEFAULT_INSTALL_DEV --shared-ip=none --shared-ipv6=none
-    ngcp-network --host=$THIS_HOST --set-interface=$DEFAULT_INSTALL_DEV --ip=auto --netmask=auto --hwaddr=auto
-    ngcp-network --host=$THIS_HOST --set-interface=$INTERNAL_DEV --ip=auto --netmask=auto --hwaddr=auto
-    nameserver="$(awk '/^nameserver/ {print $2}' /etc/resolv.conf)"
-    for entry in \$nameserver ; do
-      ngcp-network --host=$THIS_HOST --set-interface=$DEFAULT_INSTALL_DEV --dns=\$entry
-    done
-
-    GW=$(ip route show dev $DEFAULT_INSTALL_DEV | awk '/^default via/ {print $3}')
-    if [ -n "\$GW" ] ; then
-      ngcp-network --host=$THIS_HOST --set-interface=$DEFAULT_INSTALL_DEV --gateway="\$GW"
-    fi
-
-    ngcp-network --host=$THIS_HOST --peer=$PEER
-    ngcp-network --host=$THIS_HOST --move-from=lo --move-to=$INTERNAL_DEV --type=ha_int
-    # set *_ext types accordingly for PRO setup
-    ngcp-network --host=$THIS_HOST --move-from=lo --move-to=$EXTERNAL_DEV \
-                                   --type=sip_ext --type=rtp_ext --type=mon_ext
-    ngcp-network --host=$THIS_HOST --set-interface=$EXTERNAL_DEV --type=web_ext
-
-    ngcp-network --host=$PEER --peer=$THIS_HOST
-    ngcp-network --host=$PEER --set-interface=$EXTERNAL_DEV --shared-ip=none --shared-ipv6=none
-    ngcp-network --host=$PEER --set-interface=lo --ipv6='::1' --ip=auto --netmask=auto --hwaddr=auto
-
-    # add ssh_ext to all the interfaces of sp1 on sp1
-    for interface in \$NETWORK_DEVICES ; do
-      ngcp-network --host=$THIS_HOST --set-interface=\$interface --type=ssh_ext
-    done
-
-    # add ssh_ext to lo and $INTERNAL_DEV interfaces of sp2 on sp1 so we can reach the ssh server at any time
-    ngcp-network --host=$PEER --set-interface=lo --type=ssh_ext
-    ngcp-network --host=$PEER --set-interface=$INTERNAL_DEV --type=ssh_ext
-
-    # needed to make sure MySQL setup is OK for first node until second node is set up
-    ngcp-network --host=$PEER --set-interface=$INTERNAL_DEV --ip=$IP2 --netmask=$DEFAULT_INTERNAL_NETMASK --type=ha_int
-    ngcp-network --host=$PEER --role=proxy --role=lb --role=mgmt --role=rtp --role=db
-    ngcp-network --host=$PEER --set-interface=lo --type=sip_int --type=web_int --type=web_ext --type=aux_ext
-
-    # version >= mr3.5, previous versions has no dbnode option
-    ngcp-network --host=$PEER --dbnode=2 || true
-
-    cp /etc/ngcp-config/network.yml /mnt/glusterfs/shared_config/network.yml
-
-    # use --no-db-sync only if supported by ngcp[cfg] version
-    if grep -q -- --no-db-sync /usr/sbin/ngcpcfg ; then
-      ngcpcfg --no-db-sync commit "deployed /etc/ngcp-config/network.yml on $ROLE"
-    else
-      ngcpcfg commit "deployed /etc/ngcp-config/network.yml on $ROLE"
-    fi
-
-    ngcpcfg build
-    ngcpcfg push --shared-only
-  else # ROLE = sp2
-    ngcpcfg pull
-    ngcp-network --host=$THIS_HOST --set-interface=$DEFAULT_INSTALL_DEV --ip=auto --netmask=auto --hwaddr=auto
-
-    # finalize the --ip=$IP2 from previous run on first node
-    ngcp-network --host=$THIS_HOST --set-interface=$INTERNAL_DEV --ip=auto --netmask=auto --hwaddr=auto --type=ha_int
-    # set *_ext types accordingly for PRO setup
-    ngcp-network --host=$THIS_HOST --set-interface=$EXTERNAL_DEV --type=web_int --type=web_ext --type=sip_ext \
-                              --type=rtp_ext --type=mon_ext
-
-    # add ssh_ext to all the interfaces of sp2 on sp2
-    for interface in \$NETWORK_DEVICES ; do
-      ngcp-network --host=$THIS_HOST --set-interface=\$interface --type=ssh_ext
-    done
-
-    # use --no-db-sync only if supported by ngcp[cfg] version
-    if grep -q -- --no-db-sync /usr/sbin/ngcpcfg ; then
-      ngcpcfg --no-db-sync commit "deployed /etc/ngcp-config/network.yml on $ROLE"
-    else
-      ngcpcfg commit "deployed /etc/ngcp-config/network.yml on $ROLE"
-    fi
-
-    ngcpcfg push --shared-only
-
-    # make sure login from second node to first node works
-    ssh-keyscan $PEER >> ~/.ssh/known_hosts
-
-    # live system uses a different SSH host key than the finally installed
-    # system, so do NOT use ssh-keyscan here
-    tail -1 ~/.ssh/known_hosts | sed "s/\w* /$THIS_HOST /" >> ~/.ssh/known_hosts
-    tail -1 ~/.ssh/known_hosts | sed "s/\w* /$MANAGEMENT_IP /" >> ~/.ssh/known_hosts
-    scp ~/.ssh/known_hosts $PEER:~/.ssh/known_hosts
-
-    ssh $PEER ngcpcfg pull
-    ngcpcfg build
-
-    if ngcpcfg --help |grep -q init-mgmt ; then
-      ngcpcfg init-mgmt $MANAGEMENT_IP
-    else
-      echo "Skipping ngcpcfg init-mgmt as it is not available"
-    fi
-  fi
-EOT
-fi
-
-if "$RETRIEVE_MGMT_CONFIG" ; then
-  echo "Nothing to do (RETRIEVE_MGMT_CONFIG is set), /etc/network/interfaces was already set up."
-elif ! "$NGCP_INSTALLER" ; then
-  echo "Not modifying /etc/network/interfaces as installing plain Debian."
-elif "$DHCP" ; then
-  cat > $TARGET/etc/network/interfaces << EOF
-# This file describes the network interfaces available on your system
-# and how to activate them. For more information, see interfaces(5).
-# The loopback network interface
-auto lo
-iface lo inet loopback
-
-# The primary network interface
-auto $EXTERNAL_DEV
-iface $EXTERNAL_DEV inet dhcp
-EOF
-  # make sure internal network is available even with external
-  # device using DHCP
-  if "$PRO_EDITION" ; then
-  cat >> $TARGET/etc/network/interfaces << EOF
-
-auto $INTERNAL_DEV
-iface $INTERNAL_DEV inet static
-        address $INTERNAL_IP
-        netmask $INTERNAL_NETMASK
-
-EOF
-  fi
-else
-  # assume host system has a valid configuration
-  if "$PRO_EDITION" && "$VLAN" ; then
-    cat > $TARGET/etc/network/interfaces << EOF
-# This file describes the network interfaces available on your system
-# and how to activate them. For more information, see interfaces(5).
-# The loopback network interface
-auto lo
-iface lo inet loopback
-
-auto vlan${VLANID}
-iface vlan${VLANID} inet static
-        address $(ifdata -pa $EXTERNAL_DEV)
-        netmask $(ifdata -pn $EXTERNAL_DEV)
-        gateway $(route -n | awk '/^0\.0\.0\.0/{print $2; exit}')
-        dns-nameservers $(awk '/^nameserver/ {print $2}' /etc/resolv.conf | xargs echo -n)
-        vlan-raw-device $VLANIF
-
-auto $INTERNAL_DEV
-iface $INTERNAL_DEV inet static
-        address $INTERNAL_IP
-        netmask $INTERNAL_NETMASK
-
-# Example:
-# allow-hotplug eth0
-# iface eth0 inet static
-#         address 192.168.1.101
-#         netmask 255.255.255.0
-#         network 192.168.1.0
-#         broadcast 192.168.1.255
-#         gateway 192.168.1.1
-#         # dns-* options are implemented by the resolvconf package, if installed
-#         dns-nameservers 195.58.160.194 195.58.161.122
-#         dns-search sipwise.com
-EOF
-  elif "$PRO_EDITION" && "$BONDING" ; then
-    cat > $TARGET/etc/network/interfaces << EOF
-# This file describes the network interfaces available on your system
-# and how to activate them. For more information, see interfaces(5).
-# The loopback network interface
-auto lo
-iface lo inet loopback
-
-auto bond0
-iface bond0 inet static
-        bond-slaves $EXTERNAL_DEV $INTERNAL_DEV
-        bond_mode 802.3ad
-        bond_miimon 100
-        bond_lacp_rate 1
-        address $(ifdata -pa $EXTERNAL_DEV)
-        netmask $(ifdata -pn $EXTERNAL_DEV)
-        gateway $(route -n | awk '/^0\.0\.0\.0/{print $2; exit}')
-        dns-nameservers $(awk '/^nameserver/ {print $2}' /etc/resolv.conf | xargs echo -n)
-
-# additional possible bonding mode
-# auto bond0
-# iface bond0 inet manual
-#         bond-slaves eth0 eth1
-#         bond_mode active-backup
-#         bond_miimon 100
-
-# Example:
-# allow-hotplug eth0
-# iface eth0 inet static
-#         address 192.168.1.101
-#         netmask 255.255.255.0
-#         network 192.168.1.0
-#         broadcast 192.168.1.255
-#         gateway 192.168.1.1
-#         # dns-* options are implemented by the resolvconf package, if installed
-#         dns-nameservers 195.58.160.194 195.58.161.122
-#         dns-search sipwise.com
-EOF
-  elif "$PRO_EDITION" ; then # no bonding but pro-edition
-    cat > $TARGET/etc/network/interfaces << EOF
-# This file describes the network interfaces available on your system
-# and how to activate them. For more information, see interfaces(5).
-# The loopback network interface
-auto lo
-iface lo inet loopback
-
-auto $EXTERNAL_DEV
-iface $EXTERNAL_DEV inet static
-        address $(ifdata -pa $EXTERNAL_DEV)
-        netmask $(ifdata -pn $EXTERNAL_DEV)
-        gateway $(route -n | awk '/^0\.0\.0\.0/{print $2; exit}')
-        dns-nameservers $(awk '/^nameserver/ {print $2}' /etc/resolv.conf | xargs echo -n)
-
-auto $INTERNAL_DEV
-iface $INTERNAL_DEV inet static
-        address $INTERNAL_IP
-        netmask $INTERNAL_NETMASK
-
-# Example:
-# allow-hotplug eth0
-# iface eth0 inet static
-#         address 192.168.1.101
-#         netmask 255.255.255.0
-#         network 192.168.1.0
-#         broadcast 192.168.1.255
-#         gateway 192.168.1.1
-#         # dns-* options are implemented by the resolvconf package, if installed
-#         dns-nameservers 195.58.160.194 195.58.161.122
-#         dns-search sipwise.com
-EOF
-  else # ce edition
-    cat > $TARGET/etc/network/interfaces << EOF
-# This file describes the network interfaces available on your system
-# and how to activate them. For more information, see interfaces(5).
-# The loopback network interface
-auto lo
-iface lo inet loopback
-
-auto $EXTERNAL_DEV
-iface $EXTERNAL_DEV inet static
-        address $(ifdata -pa $EXTERNAL_DEV)
-        netmask $(ifdata -pn $EXTERNAL_DEV)
-        gateway $(route -n | awk '/^0\.0\.0\.0/{print $2; exit}')
-        dns-nameservers $(awk '/^nameserver/ {print $2}' /etc/resolv.conf | xargs echo -n)
-
-### Further usage examples
-
-## Enable IPv6 autoconfiguration:
-# auto eth1
-# iface eth1 inet6 manual
-#  up ifconfig eth1 up
-
-## Specific manual configuration:
-# allow-hotplug eth2
-# iface eth2 inet static
-#         address 192.168.1.101
-#         netmask 255.255.255.0
-#         network 192.168.1.0
-#         broadcast 192.168.1.255
-#         gateway 192.168.1.1
-#         # dns-* options are implemented by the resolvconf package, if installed
-#         dns-nameservers 195.58.160.194 195.58.161.122
-#         dns-search sipwise.com
-EOF
-  fi
-fi # if $DHCP
-
-generate_etc_hosts() {
-
-  # finalise hostname configuration
-  cat > $TARGET/etc/hosts << EOF
-127.0.0.1 localhost
-
-# The following lines are desirable for IPv6 capable hosts
-::1     ip6-localhost ip6-loopback
-fe00::0 ip6-localnet
-ff00::0 ip6-mcastprefix
-ff02::1 ip6-allnodes
-ff02::2 ip6-allrouters
-
-EOF
-
-  # append hostnames of sp1/sp2 so they can talk to each other
-  # in the HA setup
-  if "$PRO_EDITION" ; then
-    cat >> $TARGET/etc/hosts << EOF
-$IP1 sp1
-$IP2 sp2
-EOF
-  else
-    # otherwise 'hostname --fqdn' does not work and causes delays with exim4 startup
-    cat >> $TARGET/etc/hosts << EOF
-# required for FQDN, please adjust if needed
-127.0.0.2 $TARGET_HOSTNAME. $TARGET_HOSTNAME
-EOF
-  fi
-
-}
-
-fake_uname() {
-   cat > "${TARGET}/tmp/uname.c" << EOF
-#include <stdio.h>
-#include <string.h>
-#include <dlfcn.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/syslog.h>
-#include <sys/utsname.h>
-
-#ifndef UTS_RELEASE
-#define UTS_RELEASE "0.0.0"
-#endif
-
-#ifndef RTLD_NEXT
-#define RTLD_NEXT      ((void *) -1l)
-#endif
-
-typedef int (*uname_t) (struct utsname * buf);
-
-static void *get_libc_func(const char *funcname)
-{
-  void *func;
-  char *error;
-
-  func = dlsym(RTLD_NEXT, funcname);
-  if ((error = dlerror()) != NULL) {
-    fprintf(stderr, "Can't locate libc function \`%s' error: %s", funcname, error);
-    _exit(EXIT_FAILURE);
-  }
-  return func;
-}
-
-int uname(struct utsname *buf)
-{
-  int ret;
-  char *env = NULL;
-  uname_t real_uname = (uname_t) get_libc_func("uname");
-
-  ret = real_uname((struct utsname *) buf);
-  strncpy(buf->release, ((env = getenv("UTS_RELEASE")) == NULL) ? UTS_RELEASE : env, 65);
-  return ret;
-}
-EOF
-
-  grml-chroot "$TARGET" gcc -shared -fPIC -ldl /tmp/uname.c -o /tmp/fake-uname.so || die 'Failed to build fake-uname.so'
-
-  # avoid "ERROR: ld.so: object '/tmp/fake-uname.so' from LD_PRELOAD cannot be preloaded: ignored."
-  # messages caused by the host system when running grml-chroot process
-  cp "$TARGET"/tmp/fake-uname.so /tmp/fake-uname.so
-}
-
-vagrant_configuration() {
-  # if ngcp-keyring isn't present (e.g. on plain Debian systems) then we have
-  # to install our key for usage of our own Debian mirror
-  if grml-chroot "${TARGET}" apt-key list | grep -q 680FBA8A ; then
-    echo "Sipwise Debian mirror key is already present."
-  else
-    echo "Installing Sipwise Debian mirror key (680FBA8A)."
-    grml-chroot "${TARGET}" wget -O /etc/apt/680FBA8A.asc http://${SIPWISE_REPO_HOST}/autobuild/680FBA8A.asc
-    grml-chroot "${TARGET}" apt-key add /etc/apt/680FBA8A.asc
-  fi
-
-  # make sure we use the most recent package versions, including apt-key setup
-  grml-chroot "${TARGET}" apt-get update
-
-  # bzip2, linux-headers-amd64 and make are required for VirtualBox Guest Additions installer
-  # less + sudo are required for Vagrant itself
-  echo "Installing software for VirtualBox Guest Additions installer"
-  # there's no linux-headers-amd64 package in squeeze:
-  case "$DEBIAN_RELEASE" in
-    squeeze) local linux_headers_package="linux-headers-2.6-amd64" ;;
-          *) local linux_headers_package="linux-headers-amd64"     ;;
-  esac
-  chroot "$TARGET" apt-get -y install bzip2 less ${linux_headers_package} make sudo
-  if [ $? -ne 0 ] ; then
-    die "Error: failed to install 'bzip2 less ${linux_headers_package} make sudo' packages."
-  fi
-
-  ngcp_vmbuilder='/tmp/ngcp-vmbuilder/'
-  if [ -d "${ngcp_vmbuilder}" ] ; then
-    echo "Checkout of ngcp-vmbuilder exists already, nothing to do"
-  else
-    echo "Checking out ngcp-vmbuilder git repository"
-    git clone git://git.mgm.sipwise.com/vmbuilder "${ngcp_vmbuilder}"
-  fi
-
-  echo "Adjusting sudo configuration"
-  mkdir -p "${TARGET}/etc/sudoers.d"
-  echo "sipwise ALL=NOPASSWD: ALL" > "${TARGET}/etc/sudoers.d/vagrant"
-  chmod 0440 "${TARGET}/etc/sudoers.d/vagrant"
-
-  if chroot $TARGET getent passwd | grep '^sipwise' ; then
-    echo "User sipwise exists already, nothing to do"
-  else
-    echo "Adding user sipwise"
-    adduser_sipwise
-  fi
-
-  if grep -q '^# Added for Vagrant' "${TARGET}/${SIPWISE_HOME}/.profile" 2>/dev/null ; then
-    echo "PATH configuration for user Sipwise is already adjusted"
-  else
-    echo "Adjusting PATH configuration for user Sipwise"
-    echo "# Added for Vagrant" >> "${TARGET}/${SIPWISE_HOME}/.profile"
-    echo "PATH=\$PATH:/sbin:/usr/sbin" >> "${TARGET}/${SIPWISE_HOME}/.profile"
-  fi
-
-  echo "Adjusting ssh configuration for user sipwise"
-  mkdir -p "${TARGET}/${SIPWISE_HOME}/.ssh/"
-  cat $ngcp_vmbuilder/config/id_rsa_sipwise.pub >> "${TARGET}/${SIPWISE_HOME}/.ssh/authorized_keys"
-  chroot "${TARGET}" chown sipwise:sipwise ${SIPWISE_HOME}/.ssh ${SIPWISE_HOME}/.ssh/authorized_keys
-
-  echo "Adjusting ssh configuration for user root"
-  mkdir -p "${TARGET}/root/.ssh/"
-  cat $ngcp_vmbuilder/config/id_rsa_sipwise.pub >> "${TARGET}/root/.ssh/authorized_keys"
-
-  # see https://github.com/mitchellh/vagrant/issues/1673
-  # and https://bugs.launchpad.net/ubuntu/+source/xen-3.1/+bug/1167281
-  if grep -q 'adjusted for Vagrant' "${TARGET}/root/.profile" ; then
-    echo "Workaround for annoying bug 'stdin: is not a tty' Vagrant message seems to be present already"
-  else
-    echo "Adding workaround for annoying bug 'stdin: is not a tty' Vagrant message"
-    sed -ri -e "s/mesg\s+n/# adjusted for Vagrant\ntty -s \&\& mesg n/" "${TARGET}/root/.profile"
-  fi
-
-  install_vbox_package
-
-  # required for fake_uname and VBoxLinuxAdditions.run
-  grml-chroot $TARGET apt-get update
-  grml-chroot $TARGET apt-get -y install libc6-dev gcc
-  fake_uname
-
-  KERNELHEADERS=$(basename $(ls -d ${TARGET}/usr/src/linux-headers*amd64 | grep -v -- -rt-amd64 | sort -u -r -V | head -1))
-  if [ -z "$KERNELHEADERS" ] ; then
-    die "Error: no kernel headers found for building the VirtualBox Guest Additions kernel module."
-  fi
-  KERNELVERSION=${KERNELHEADERS##linux-headers-}
-  if [ -z "$KERNELVERSION" ] ; then
-    die "Error: no kernel version could be identified."
-  fi
-
-  vbox_isofile="/usr/share/virtualbox/VBoxGuestAdditions.iso"
-  if [ ! -r "$vbox_isofile" ] ; then
-    die "Error: could not find $vbox_isofile"
-  fi
-
-  mkdir -p "${TARGET}/media/cdrom"
-  mountpoint "${TARGET}/media/cdrom" >/dev/null && umount "${TARGET}/media/cdrom"
-  mount -t iso9660 "${vbox_isofile}" "${TARGET}/media/cdrom/"
-  UTS_RELEASE=$KERNELVERSION LD_PRELOAD=/tmp/fake-uname.so grml-chroot "$TARGET" /media/cdrom/VBoxLinuxAdditions.run --nox11
-  tail -10 "${TARGET}/var/log/VBoxGuestAdditions.log"
-  umount "${TARGET}/media/cdrom/"
-
-  # work around regression in virtualbox-guest-additions-iso 4.3.10
-  if [ -d ${TARGET}/opt/VBoxGuestAdditions-4.3.10 ] ; then
-    echo "Installing VBoxGuestAddition symlink to work around vbox 4.3.10 issue"
-    ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions ${TARGET}/usr/lib/VBoxGuestAdditions
-  fi
-
-  # VBoxLinuxAdditions.run chooses /usr/lib64 as soon as this directory exists, which
-  # is the case for our PRO systems shipping the heartbeat-2 package; then the
-  # symlink /sbin/mount.vboxsf points to the non-existing /usr/lib64/VBoxGuestAdditions/mount.vboxsf
-  # file instead of pointing to /usr/lib/x86_64-linux-gnu/VBoxGuestAdditions/mount.vboxsf
-  if ! chroot "$TARGET" readlink -f /sbin/mount.vboxsf ; then
-    echo "Installing mount.vboxsf symlink to work around /usr/lib64 issue"
-    ln -sf /usr/lib/x86_64-linux-gnu/VBoxGuestAdditions/mount.vboxsf ${TARGET}/sbin/mount.vboxsf
-  fi
-
-  # MACs are different on buildbox and on local VirtualBox
-  # see http://ablecoder.com/b/2012/04/09/vagrant-broken-networking-when-packaging-ubuntu-boxes/
-  echo "Removing /etc/udev/rules.d/70-persistent-net.rules"
-  rm -f "${TARGET}/etc/udev/rules.d/70-persistent-net.rules"
-}
-
-enable_vm_services() {
-  if [ "$SP_VERSION" = "" ] || expr $SP_VERSION \>= mr3.6 >/dev/null 2>&1 ; then
-    echo "enable_vm_services has been moved to ngcp-installer for mr3.6+, nothing to do here for $SP_VERSION"
-    return
-  fi
-
-  chroot "$TARGET" etckeeper commit "Snapshot before enabling VM defaults [$(date)]" || true
-  chroot "$TARGET" bash -c "cd /etc/ngcp-config ; git commit -a -m \"Snapshot before enabling VM defaults [$(date)]\" || true"
-
-  if "$PRO_EDITION" ; then
-    chroot "$TARGET" perl -wCSD << "EOF"
-use strict;
-use warnings;
-use YAML::Tiny;
-
-my $yaml = YAML::Tiny->new;
-my $inputfile  = "/etc/ngcp-config/config.yml";
-my $outputfile = $inputfile;
-
-$yaml = YAML::Tiny->read($inputfile) or die "File $inputfile could not be read";
-
-# Enable Presence (required for PRO, on CE already enabled)
-$yaml->[0]->{kamailio}->{proxy}->{presence}->{enable} = "yes";
-
-# Enable Voice-sniff
-$yaml->[0]->{voisniff}->{admin_panel} = "yes";
-$yaml->[0]->{voisniff}->{daemon}->{start} = "yes";
-$yaml->[0]->{voisniff}->{daemon}->{external_interfaces} = "eth0 eth2";
-$yaml->[0]->{voisniff}->{daemon}->{mysql_dump_threads} = 2;
-$yaml->[0]->{voisniff}->{daemon}->{threads_per_interface} = 2;
-
-open(my $fh, ">", "$outputfile") or die "Could not open $outputfile for writing";
-print $fh $yaml->write_string() or die "Could not write YAML to $outputfile";
-EOF
-  fi
-
-  # CE
-  chroot "$TARGET" perl -wCSD << "EOF"
-use strict;
-use warnings;
-use YAML::Tiny;
-
-my $yaml = YAML::Tiny->new;
-my $inputfile  = "/etc/ngcp-config/config.yml";
-my $outputfile = $inputfile;
-
-$yaml = YAML::Tiny->read($inputfile) or die "File $inputfile could not be read";
-
-# Enable SSH on all IPs/interfaces (0.0.0.0)
-push @{$yaml->[0]->{sshd}->{listen_addresses}}, '0.0.0.0';
-
-open(my $fh, ">", "$outputfile") or die "Could not open $outputfile for writing";
-print $fh $yaml->write_string() or die "Could not write YAML to $outputfile";
-EOF
-
-  # record configuration file changes
-  chroot "$TARGET" etckeeper commit "Snapshot after enabling VM defaults [$(date)]" || true
-  chroot "$TARGET" bash -c "cd /etc/ngcp-config ; git commit -a -m \"Snapshot after enabling VM defaults [$(date)]\" || true"
-}
-
-adjust_for_low_performance() {
-  # record configuration file changes
-  chroot "$TARGET" etckeeper commit "Snapshot before decreasing default resource usage [$(date)]" || true
-  chroot "$TARGET" bash -c "cd /etc/ngcp-config ; git commit -a -m \"Snapshot before decreasing default resource usage [$(date)]\" || true"
-
-  echo "Decreasing default resource usage"
-  if expr $SP_VERSION \<= mr3.2.999 >/dev/null 2>&1 ; then
-    # sems: need for NGCP <=mr3.2 (MT#7407)
-    sed -e 's/media_processor_threads=[0-9]\+$/media_processor_threads=1/g' \
-        -i ${TARGET}/etc/ngcp-config/templates/etc/sems/sems.conf.tt2 \
-        -i ${TARGET}/etc/sems/sems.conf || true
-  fi
-
-  if expr $SP_VERSION \<= 3.1 >/dev/null 2>&1 ; then
-    # kamailio: need for NGCP <=3.1 (MT#5513)
-    sed -e 's/tcp_children=4$/tcp_children=1/g' \
-        -i ${TARGET}/etc/ngcp-config/templates/etc/kamailio/proxy/kamailio.cfg.tt2 \
-        -i ${TARGET}/etc/kamailio/proxy/kamailio.cfg || true
-  fi
-
-  if expr $SP_VERSION \<= mr3.2.999 >/dev/null 2>&1 ; then
-    # nginx: need for NGCP <=mr3.2 (MT#7275)
-    sed -e 's/NPROC=[0-9]\+$/NPROC=2/g' \
-        -i ${TARGET}/etc/ngcp-config/templates/etc/init.d/ngcp-panel.tt2 \
-        -i ${TARGET}/etc/init.d/ngcp-panel \
-        -i ${TARGET}/etc/ngcp-config/templates/etc/init.d/ngcp-www-csc.tt2 \
-        -i ${TARGET}/etc/init.d/ngcp-www-csc || true
-  fi
-
-  # record configuration file changes
-  chroot "$TARGET" etckeeper commit "Snapshot after decreasing default resource usage [$(date)]" || true
-  chroot "$TARGET" bash -c "cd /etc/ngcp-config ; git commit -a -m \"Snapshot after decreasing default resource usage [$(date)]\" || true"
-}
-
-if "$RETRIEVE_MGMT_CONFIG" ; then
-  echo "Nothing to do, /etc/hosts was already set up."
-else
-  echo "Generating /etc/hosts"
-  generate_etc_hosts
-fi
-
-if "$VAGRANT" ; then
-  echo "Bootoption vagrant present, executing vagrant_configuration."
-  vagrant_configuration
-fi
-
-if "$ADJUST_FOR_LOW_PERFORMANCE" ; then
-  echo "Bootoption lowperformance present, executing adjust_for_low_performance"
-  adjust_for_low_performance
-fi
-
-if "$ENABLE_VM_SERVICES" ; then
-  echo "Bootoption enablevmservices present, executing enable_vm_services"
-  enable_vm_services
-fi
-
-if [ -n "$PUPPET" ] ; then
-  echo "Rebuilding /etc/hosts"
-  cat > $TARGET/etc/hosts << EOF
-# Generated via deployment.sh
-127.0.0.1 localhost
-
-# The following lines are desirable for IPv6 capable hosts
-::1     ip6-localhost ip6-loopback
-fe00::0 ip6-localnet
-ff00::0 ip6-mcastprefix
-ff02::1 ip6-allnodes
-ff02::2 ip6-allrouters
-
-EOF
-
-  echo "Setting hostname to $TARGET_HOSTNAME"
-  echo "$TARGET_HOSTNAME" > ${TARGET}/etc/hostname
-  grml-chroot $TARGET /etc/init.d/hostname.sh
-
-  chroot $TARGET apt-get -y install resolvconf libnss-myhostname
-
-  chroot $TARGET sed -i 's/START=.*/START=yes/' /etc/default/puppet
-
-  cat > ${TARGET}/etc/puppet/puppet.conf << EOF
-# Deployed via deployment.sh
-[main]
-logdir=/var/log/puppet
-vardir=/var/lib/puppet
-ssldir=/var/lib/puppet/ssl
-rundir=/var/run/puppet
-factpath=$vardir/lib/facter
-templatedir=$confdir/templates
-prerun_command=/etc/puppet/etckeeper-commit-pre
-postrun_command=/etc/puppet/etckeeper-commit-post
-server=puppet.mgm.sipwise.com
-
-[master]
-ssl_client_header=SSL_CLIENT_S_DN
-ssl_client_verify_header=SSL_CLIENT_VERIFY
-
-[agent]
-environment=$PUPPET
-EOF
-
-  grml-chroot $TARGET puppet agent --test --waitforcert 30 2>&1 | tee -a /tmp/puppet.log || true
-fi
-
-# make sure we don't leave any running processes
-for i in asterisk atd collectd collectdmon dbus-daemon exim4 \
-         glusterd glusterfs glusterfsd glusterfs-server haveged monit nscd \
-	 redis-server snmpd voisniff-ng ; do
-  killall -9 $i >/dev/null 2>&1 || true
-done
-
-upload_file() {
-  [ -n "$1" ] || return 1
-
-  file="$1"
-
-  DB_MD5=$(curl --max-time 180 --connect-timeout 30 -F file=@"${file}" http://jenkins.mgm.sipwise.com:4567/upload)
-
-  if [[ "$DB_MD5" == $(md5sum "${file}" | awk '{print $1}') ]] ; then
-    echo "Upload of $file went fine."
-  else
-    echo "#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!"
-    echo "#!#!#!#!#!#!#!      Warning: error while uploading ${file}.      #!#!#!#!#!#!#!"
-    echo "#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!"
-  fi
-}
-
-upload_db_dump() {
-  if "$CE_EDITION" ; then
-    echo "CE edition noticed, continuing..."
-  else
-    echo "This is not a CE edition, ignoring request to generate and upload DB dump."
-    return 0
-  fi
-
-  chroot $TARGET /etc/init.d/mysql restart || true
-
-  # retrieve list of databases
-  databases=$(chroot $TARGET mysql -B -N -e 'show databases' | grep -ve '^information_schema$' -ve '^mysql$' -ve '^performance_schema$')
-
-  if [ -z "$databases" ] ; then
-    echo "Warning: could not retrieve list of available databases, retrying in 10 seconds."
-    sleep 10
-    databases=$(chroot $TARGET mysql -B -N -e 'show databases' | grep -ve '^information_schema$' -ve '^mysql$')
-
-    if [ -z "$databases" ] ; then
-      echo "Warning: still could not retrieve list of available databases, giving up."
-      return 0
-    fi
-  fi
-
-  # the only way to rely on mysqldump writing useful data is checking for "Dump
-  # completed on" inside the dump as it writes errors also to stdout, so before
-  # actually dumping it for committing it to VCS we need to dump it once without
-  # the "--skip-comments" option, do the check on that and then really dump it
-  # later...
-  if ! chroot $TARGET mysqldump --add-drop-database -B $databases > /dump.db ; then
-    die "Error while dumping mysql databases."
-  fi
-
-  if ! grep -q 'Dump completed on' /dump.db ; then
-    die "Error: invalid data inside database dump."
-  fi
-
-  if ! chroot $TARGET mysqldump --add-drop-database --skip-comments -B $databases > /dump.db ; then
-    die "Error while dumping mysql databases."
-  fi
-
-  chroot $TARGET /etc/init.d/mysql stop >/dev/null 2>&1 || true
-
-  echo
-  echo "NOTE: you can safely IGNORE the message stating:"
-  echo "        ERROR 2002 (HY000): Can't connect to local MySQL server through socket ..."
-  echo "      listed above. If you're seeing this note here everything went fine."
-  echo
-
-  upload_file "/dump.db"
-}
-
-upload_yml_cfg() {
-  if "$CE_EDITION" ; then
-    echo "CE edition noticed, continuing..."
-  else
-    echo "This is not a CE edition, ignoring request to generate and upload  dump."
-    return 0
-  fi
-
-  cat << EOT | grml-chroot $TARGET /bin/bash
-# CE
-/usr/share/ngcp-cfg-schema/cfg_scripts/init/0001_init_config_ce.up    /dev/null  /config_ce.yml
-/usr/share/ngcp-cfg-schema/cfg_scripts/init/0002_init_constants_ce.up /dev/null  /constants_ce.yml
-
-# PRO
-/usr/share/ngcp-cfg-schema/cfg_scripts/init/0001_init_config_pro.up    /dev/null /config_pro.yml
-/usr/share/ngcp-cfg-schema/cfg_scripts/init/0002_init_constants_pro.up /dev/null /constants_pro.yml
-
-# config.yml
-for file in /usr/share/ngcp-cfg-schema/cfg_scripts/config/*.up ; do
-  [ -r \$file ] || continue
-  case $(basename \$file) in
-    *_pro.up)
-      \$file /config_pro.yml /config_pro.yml
-      ;;
-    *_ce.up)
-      \$file /config_ce.yml  /config_ce.yml
-      ;;
-    *)
-      \$file /config_ce.yml  /config_ce.yml
-      \$file /config_pro.yml /config_pro.yml
-      ;;
-  esac
-done
-
-# constants.yml
-for file in /usr/share/ngcp-cfg-schema/cfg_scripts/constants/*.up ; do
-  [ -r \$file ] || continue
-  case $(basename \$file) in
-    *_pro.up)
-      \$file /constants_pro.yml /constants_pro.yml
-      ;;
-    *_ce.up)
-      \$file /constants_ce.yml  /constants_ce.yml
-      ;;
-    *)
-      \$file /constants_ce.yml  /constants_ce.yml
-      \$file /constants_pro.yml /constants_pro.yml
-      ;;
-  esac
-done
-EOT
-
-  for file in config_ce.yml constants_ce.yml config_pro.yml constants_pro.yml ; do
-    upload_file "${TARGET}/$file"
-  done
-}
-
-# upload db dump only if we're deploying a trunk version
-if $TRUNK_VERSION && ! checkBootParam ngcpnoupload ; then
-  set_deploy_status "upload_data"
-  echo "Trunk version detected, considering DB dump upload."
-  upload_db_dump
-  echo "Trunk version detected, considering yml configs upload."
-  upload_yml_cfg
-fi
-
-# remove retrieved and generated files
-rm -f ${TARGET}/config_*yml
-rm -f ${TARGET}/constants_*.yml
-rm -f ${TARGET}/ngcp-installer*deb
-
-if [ -r "${INSTALL_LOG}" ] && [ -d "${TARGET}"/var/log/ ] ; then
-  cp "${INSTALL_LOG}" "${TARGET}"/var/log/
-fi
-
-# don't leave any mountpoints
-sync
-umount ${TARGET}/proc       2>/dev/null || true
-umount ${TARGET}/sys        2>/dev/null || true
-umount ${TARGET}/dev/pts    2>/dev/null || true
-umount ${TARGET}/dev        2>/dev/null || true
-chroot ${TARGET} umount -a  2>/dev/null || true
-sync
-
-# unmount chroot - what else?
-umount $TARGET || umount -l $TARGET # fall back if a process is still being active
-
-if "$LVM" ; then
-  # make sure no device mapper handles are open, otherwise
-  # rereading partition table won't work
-  dmsetup remove_all || true
-fi
-
-# make sure /etc/fstab is up2date
-if ! blockdev --rereadpt /dev/$DISK ; then
-  echo "Something on disk /dev/$DISK (mountpoint $TARGET) seems to be still active, debugging output follows:"
-  ps auxwww || true
-fi
-
-# party time! who brings the whiskey?
-echo "Installation finished. \o/"
-echo
-echo
-
-[ -n "$start_seconds" ] && SECONDS="$[$(cut -d . -f 1 /proc/uptime)-$start_seconds]" || SECONDS="unknown"
-logit "Successfully finished deployment process [$(date) - running ${SECONDS} seconds]"
-echo "Successfully finished deployment process [$(date) - running ${SECONDS} seconds]"
-
-set_deploy_status "finished"
-
-# if ngcpstatus boot option is used wait for a specific so a
-# remote host has a chance to check for deploy status "finished",
-# defaults to 0 seconds otherwise
-sleep "$STATUS_WAIT"
-
-if "$INTERACTIVE" ; then
-  exit 0
-fi
-
-# do not prompt when running in automated mode
-if "$REBOOT" ; then
-  echo "Rebooting system as requested via ngcpreboot"
-  for key in s u b ; do
-    echo $key > /proc/sysrq-trigger
-    sleep 2
-  done
-fi
-
-if "$HALT" ; then
-  echo "Halting system as requested via ngcphalt"
-
-  for key in s u o ; do
-    echo $key > /proc/sysrq-trigger
-    sleep 2
-  done
-fi
+display_logo
+sleep $TIMEOUT
+wget --timeout=30 -O "/tmp/deployment_${SP_VERSION}" "http://deb.sipwise.com/netscript/${SP_VERSION}/deployment.sh"
 
-echo "Do you want to [r]eboot or [h]alt the system now? (Press any other key to cancel.)"
-unset a
-read a
-case "$a" in
-  r)
-    echo "Rebooting system as requested."
-    # reboot is for losers
-    for key in s u b ; do
-      echo $key > /proc/sysrq-trigger
-      sleep 2
-    done
-  ;;
-  h)
-    echo "Halting system as requested."
-    # halt(8) is for losers
-    for key in s u o ; do
-      echo $key > /proc/sysrq-trigger
-      sleep 2
-    done
-  ;;
-  *)
-    echo "Not halting system as requested. Please do not forget to reboot."
-    ;;
-esac
+bash "/tmp/deployment_${SP_VERSION}"
 
 ## END OF FILE #################################################################1