@ -29,6 +29,7 @@ NGCP_INSTALLER=false
INTERACTIVE = false
INTERACTIVE = false
LOCAL_MIRROR = false
LOCAL_MIRROR = false
DHCP = false
DHCP = false
LOGO = true
export DISK = sda # will be configured as /dev/sda
export DISK = sda # will be configured as /dev/sda
### helper functions {{{
### helper functions {{{
@ -67,6 +68,19 @@ getProxmoxBootParam() {
echo " $result "
echo " $result "
return 0
return 0
}
}
logo( ) {
cat <<-EOF
+++ Grml-Sipwise Deployment +++
$( cat /etc/grml_version)
$CHASSIS
$( ip-screen)
$( lscpu | awk '/^CPU\(s\)/ {print $2}' ) CPUs | $( /usr/bin/gawk '/MemTotal/{print $2}' /proc/meminfo) kB RAM
--------------------------------------------------------------------------------
EOF
}
### }}}
### }}}
# provide method to boot live system without running installer
# provide method to boot live system without running installer
@ -75,6 +89,10 @@ if checkBootParam noinstall ; then
exit 0
exit 0
fi
fi
if checkBootParam nocolorlogo ; then
LOGO = false
fi
## detect environment {{{
## detect environment {{{
if dmidecode| grep -q 'Location In Chassis' ; then
if dmidecode| grep -q 'Location In Chassis' ; then
CHASSIS = " Running in blade chassis $( dmidecode| awk '/Location In Chassis/ {print $4}' ) "
CHASSIS = " Running in blade chassis $( dmidecode| awk '/Location In Chassis/ {print $4}' ) "
@ -94,7 +112,8 @@ if checkBootParam nongcp ; then
NGCP_INSTALLER = false
NGCP_INSTALLER = false
fi
fi
if checkBootParam ngcpinst ; then
if checkBootParam ngcpinst || checkBootParam ngcpsp1 || checkBootParam ngcpsp2 || \
checkBootParam ngcppro ; then
NGCP_INSTALLER = true
NGCP_INSTALLER = true
fi
fi
@ -115,6 +134,26 @@ else
TARGET_HOSTNAME = "spce"
TARGET_HOSTNAME = "spce"
fi
fi
fi
fi
if checkBootParam ngcpip1 ; then
export IP1 = $( getBootParam ngcpip1)
fi
if checkBootParam ngcpip2 ; then
export IP2 = $( getBootParam ngcpip2)
fi
if checkBootParam ngcpeaddr ; then
export EADDR = $( getBootParam ngcpeaddr)
fi
if checkBootParam ngcpeiface ; then
export EIFACE = $( getBootParam ngcpeiface)
fi
if checkBootParam ngcpmcast ; then
export MCASTADDR = $( getBootParam ngcpmcast)
fi
## }}}
## }}}
## interactive mode {{{
## interactive mode {{{
@ -172,8 +211,8 @@ Usage examples:
for param in $* ; do
for param in $* ; do
case $param in
case $param in
*-h*| *--help*| *help*) usage ; exit 0; ;
*-h*| *--help*| *help*) usage ; exit 0; ;
*ngcpsp1*) ROLE = sp1 ; PRO_EDITION = true; CE_EDITION = false ; ;
*ngcpsp1*) ROLE = sp1 ; PRO_EDITION = true; CE_EDITION = false ; NGCP_INSTALLER = true ; ;
*ngcpsp2*) ROLE = sp2 ; TARGET_HOSTNAME = sp2; PRO_EDITION = true; CE_EDITION= false ; ;
*ngcpsp2*) ROLE = sp2 ; TARGET_HOSTNAME = sp2; PRO_EDITION = true; NGCP_INSTALLER= true; CE_EDITION= false ; ;
*ngcppro*) 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 ; ;
*ngcpce*) PRO_EDITION = false; CE_EDITION = true ; TARGET_HOSTNAME = spce ; ROLE = '' ; NGCP_INSTALLER = true ; ;
*nongcp*) NGCP_INSTALLER = false; ;
*nongcp*) NGCP_INSTALLER = false; ;
@ -198,6 +237,43 @@ if ! $NGCP_INSTALLER ; then
unset ROLE
unset ROLE
fi
fi
# needed inside ngcp-installer
if $PRO_EDITION ; then
export ROLE = $ROLE
# hopefully set via bootoption/cmdline,
# otherwise fall back to hopefully-safe-defaults
[ -n " $IP1 " ] || export IP1 = 192.168.1.101
[ -n " $IP2 " ] || export IP2 = 192.168.1.102
[ -n " $EADDR " ] || export EADDR = 192.168.1.103
[ -n " $EIFACE " ] || export EIFACE = b0
[ -n " $MCASTADDR " ] || export MCASTADDR = 226.94.1.1
fi
# 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 addres check in pro edition
if checkBootParam ip ; then
tmpdev = $( getBootParam ip)
case $tmpdev in *eth*) dev = $( echo $tmpdev | sed -e 's/.*:\(eth.\):.*/\1/' ) ; ; esac
fi
[ -n " $dev " ] || dev = 'eth0'
IP = " $( ifdata -pa $dev ) "
if $PRO_EDITION ; then
case $IP in
" $IP1 " | " $IP2 " | " $EADDR " ) ipcheck = true; ;
*) ipcheck = false; ;
esac
if ! $ipcheck ; then
echo "Error: neither ngcpip1 nor ngcpip2 nor ngcpeaddr match IP address of running system." >& 2
echo "Deploying glusterfs through ngcp-installer will not work, exiting therefore. " >& 2
echo "Tip: run netcardconfig to configure your network." >& 2
exit 1
fi
fi
echo " Deployment Settings:
echo " Deployment Settings:
Install ngcp: $NGCP_INSTALLER
Install ngcp: $NGCP_INSTALLER
@ -229,6 +305,13 @@ if $INTERACTIVE ; then
fi
fi
## }}}
## }}}
if $LOGO ; then
echo -ne "\ec\e[1;31m"
logo
echo -ne "\e[9;0r"
echo -ne "\e[9B\e[1;m"
fi
if $PRO_EDITION ; then
if $PRO_EDITION ; then
if ifconfig usb0 & >/dev/null ; then
if ifconfig usb0 & >/dev/null ; then
ifconfig usb0 169.254.1.102 netmask 255.255.0.0
ifconfig usb0 169.254.1.102 netmask 255.255.0.0
@ -272,14 +355,6 @@ fi
# measure time of installation procedure - everyone loves stats!
# measure time of installation procedure - everyone loves stats!
start_seconds = $( cut -d . -f 1 /proc/uptime)
start_seconds = $( cut -d . -f 1 /proc/uptime)
# when using ip=....:$HOSTNAME:eth0:off file /etc/hosts doesn't contain the
# hostname by default, avoid warning/error messages in the host system
if [ -x /usr/bin/ifdata ] ; then
IP = " $( ifdata -pa eth0) "
else
IP = '192.168.51.123'
fi
# TODO - improve :)
# TODO - improve :)
if checkBootParam ngcpprofile ; then
if checkBootParam ngcpprofile ; then
PROFILE = " $( getBootParam ngcpprofile) " || true
PROFILE = " $( getBootParam ngcpprofile) " || true
@ -500,16 +575,6 @@ if $NGCP_INSTALLER ; then
# install and execute ngcp-installer
# install and execute ngcp-installer
if $PRO_EDITION ; then
if $PRO_EDITION ; then
export ROLE = $ROLE
# hopefully set via bootoption/cmdline,
# otherwise fall back to hopefully-safe-defaults
[ -n " $IP1 " ] || export IP1 = 192.168.1.101
[ -n " $IP2 " ] || export IP2 = 192.168.1.102
[ -n " $EADDR " ] || export EADDR = 192.168.1.103
[ -n " $EIFACE " ] || export EIFACE = b0
[ -n " $MCASTADDR " ] || export MCASTADDR = 226.94.1.1
cat << EOT | grml-chroot $TARGE T /bin/bash
cat << EOT | grml-chroot $TARGE T /bin/bash
PKG = ngcp-installer-latest.deb
PKG = ngcp-installer-latest.deb
wget http://deb.sipwise.com/sppro/\$ PKG
wget http://deb.sipwise.com/sppro/\$ PKG