From 2280ece220c0850811417a90d771c60218f6b6f7 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Sun, 1 Feb 2015 00:16:42 +0100 Subject: [PATCH] MT#10277 Use original deployment.sh as present on web server Change-Id: I13d0a9ed5ca8e1df55892845e6e7a5a64487acad --- deployment.sh | 257 +++++++++++++++++++++++++++----------------------- 1 file changed, 138 insertions(+), 119 deletions(-) diff --git a/deployment.sh b/deployment.sh index aba2d64..b064f1e 100755 --- a/deployment.sh +++ b/deployment.sh @@ -7,7 +7,7 @@ exec > >(tee -a $INSTALL_LOG ) exec 2> >(tee -a $INSTALL_LOG >&2) # set version to git commit ID -SCRIPT_VERSION="%SCRIPT_VERSION%" +SCRIPT_VERSION=OUTDATED # not set? then fall back to timestamp of execution if [ -z "$SCRIPT_VERSION" ] || [ "$SCRIPT_VERSION" = '%SCRIPT_VERSION%' ] ; then @@ -61,8 +61,6 @@ FILESYSTEM="ext4" SYSTEMD=false DEBIAN_REPO_HOST="debian.sipwise.com" SIPWISE_REPO_HOST="deb.sipwise.com" -SIPWISE_REPO_TRANSPORT="http" -DPL_MYSQL_REPLICATION=true # if TARGET_DISK environment variable is set accept it if [ -n "$TARGET_DISK" ] ; then @@ -247,24 +245,12 @@ install_vbox_package() { ensure_augtool_present() { if [ -x /usr/bin/augtool ] ; then echo "/usr/bin/augtool is present, nothing to do" - return 0 - fi - echo "augtool isn't present, installing augeas-tools package:" - - 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 main" > \ - "${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 + else + echo "augtool isn't present, installing augeas-tools package:" - 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 augeas-tools + apt-get update + DEBIAN_FRONTEND='noninteractive' apt-get -y install augeas-tools + fi } ### }}} @@ -412,6 +398,11 @@ if checkBootParam ngcpautobuildrelease ; then 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 if checkBootParam ngcpvers ; then SP_VERSION=$(getBootParam ngcpvers) @@ -532,10 +523,6 @@ fi if checkBootParam sipwiserepo ; then SIPWISE_REPO_HOST=$(getBootParam sipwiserepo) fi - -if checkBootParam ngcpnomysqlrepl ; then - DPL_MYSQL_REPLICATION=false -fi ## }}} ## interactive mode {{{ @@ -565,7 +552,6 @@ Control installation parameters: ngcpinstvers=... - use specific NGCP installer version debianrepo=... - hostname of Debian APT repository mirror sipwiserepo=... - hostname of Sipwise APT repository mirror - ngcpnomysqlrepl - skip MySQL sp1<->sp2 replication configuration/check Control target system: @@ -719,10 +705,10 @@ if "$PRO_EDITION" ; then IP1=$(awk '/sp1/ { print $1 }' /tmp/hosts) || IP1=$DEFAULT_IP1 IP2=$(awk '/sp2/ { print $1 }' /tmp/hosts) || IP2=$DEFAULT_IP2 - if [ -z "$INTERNAL_NETMASK" ]; then - 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 }') - fi + 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 @@ -740,6 +726,21 @@ 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 @@ -850,16 +851,13 @@ if "$LOGO" ; then fi if "$PRO_EDITION" ; then - if "$RETRIEVE_MGMT_CONFIG" && "$RESTART_NETWORK" ; then - echo "Skipping $INTERNAL_DEV config" - else - # 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 - fi + # 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 @@ -1314,8 +1312,6 @@ if "$RETRIEVE_MGMT_CONFIG" && "$RESTART_NETWORK" ; then # 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 - logit 'Set /etc/hosts from TARGET' - cp ${TARGET}/etc/hosts /etc/hosts echo 'Restarting networking' logit 'Restarting networking' /etc/init.d/networking restart @@ -1400,70 +1396,6 @@ get_installer_path() { fi } -set_repos() { - 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 -EOF - fi -} - -gen_installer_config () { - mkdir -p "${TARGET}/etc/ngcp-installer/" - - if "$PRO_EDITION" ; then - cat > ${TARGET}/etc/ngcp-installer/config_deploy.inc << EOF -HNAME="${ROLE}" -CROLE="${CROLE}" -IP1="${IP1}" -IP2="${IP2}" -EIFACE="${EIFACE}" -EADDR="${EADDR}" -MCASTADDR="${MCASTADDR}" -DPL_MYSQL_REPLICATION="${DPL_MYSQL_REPLICATION}" -EOF - fi - - cat >> ${TARGET}/etc/ngcp-installer/config_deploy.inc << EOF -FORCE=yes -SKIP_SOURCES_LIST="${SKIP_SOURCES_LIST}" -ADJUST_FOR_LOW_PERFORMANCE="${ADJUST_FOR_LOW_PERFORMANCE}" -ENABLE_VM_SERVICES="${ENABLE_VM_SERVICES}" -SIPWISE_REPO_HOST="${SIPWISE_REPO_HOST}" -SIPWISE_REPO_TRANSPORT="${SIPWISE_REPO_TRANSPORT}" -EOF -} - if "$NGCP_INSTALLER" ; then if "$RETRIEVE_MGMT_CONFIG" ; then @@ -1499,32 +1431,120 @@ if "$NGCP_INSTALLER" ; then # set INSTALLER_PATH and INSTALLER depending on release/version get_installer_path - # generate debian/sipwise repos - set_repos + 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 ngcp-installer + # install and execute ngcp-installer logit "ngcp-installer: $INSTALLER" - cat << EOT | grml-chroot $TARGET /bin/bash + 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 - # set installer configs - gen_installer_config - - # execute ngcp-installer - echo "ngcp-installer" > /tmp/ngcp-installer-cmdline.log - cat << EOT | grml-chroot $TARGET /bin/bash -ngcp-installer 2>&1 | tee -a /tmp/ngcp-installer-debug.log + 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 @@ -1582,10 +1602,9 @@ EOT case "$CROLE" in proxy) - if grml-chroot $TARGET /etc/init.d/mysql start 2 ; then + if chroot $TARGET service mysql start 2 ; then logit "Configuring MySQL second instance" - chroot $TARGET /usr/share/ngcp-ngcpcfg/helper/check-for-mysql 10 2 - chroot $TARGET ngcp-sync-constants -r -s --local-repl + chroot $TARGET ngcp-sync-constants -r -s else logit "Can't start MySQL second instance" fi