diff --git a/install/cobbler.sh b/install/cobbler.sh index 37ba2c1a..80cc09a0 100755 --- a/install/cobbler.sh +++ b/install/cobbler.sh @@ -13,7 +13,9 @@ sudo mkdir /root/backup # create backup folder sudo cp /etc/ntp.conf /root/backup/ # update ntp.conf sudo sed -i 's/^#server[ \t]\+127.127.1.0/server 127.127.1.0/g' /etc/ntp.conf -sudo service ntpd restart +sudo service ntpd stop +sudo ntpdate 0.centos.pool.ntp.org +sudo service ntpd start # configure xinetd sudo cp /etc/xinetd.d/tftp /root/backup/ @@ -38,8 +40,10 @@ sudo cp /etc/cobbler/dhcp.template /root/backup/cobbler/ # Dumps the variables to dhcp template subnet=$(ipcalc $SUBNET -n |cut -f 2 -d '=') -sudo sed -i "s/subnet 192.168.1.0 netmask 255.255.255.0/subnet $subnet netmask 255.255.255.0/g" /etc/cobbler/dhcp.template -sudo sed -i "/option routers/c\ option routers $OPTION_ROUTER;" /etc/cobbler/dhcp.template +sudo sed -i "s/subnet 192.168.1.0 netmask 255.255.255.0/subnet $subnet netmask $netmask/g" /etc/cobbler/dhcp.template +sudo sed -i "/option routers[ \t]\+[a-zA-Z0-9]\+.[a-zA-Z0-9]\+.[a-zA-Z0-9]\+.[a-zA-Z0-9]\+/c\ option routers $OPTION_ROUTER;" /etc/cobbler/dhcp.template +sudo sed -i "s/option subnet-mask[ \t]\+255.255.255.0/option subnet-mask $netmask/g" /etc/cobbler/dhcp.template +sudo sed -i "/option domain-name-servers/c\ option domain-name-servers $ipaddr;" /etc/cobbler/dhcp.template sudo sed -i "/range dynamic-bootp/c\ range dynamic-bootp $IP_RANGE;" /etc/cobbler/dhcp.template sudo sed -i 's/^\([ \t]*\).*fixed-address.*$/\1#pass/g' /etc/cobbler/dhcp.template sudo sed -i "/allow bootp/a deny unknown-clients;\nlocal-address $ipaddr;" /etc/cobbler/dhcp.template @@ -53,7 +57,8 @@ sudo sed -i 's/manage_tftpd:[ \t]\+0/manage_tftpd: 1/g' /etc/cobbler/settings sudo sed -i 's/anamon_enabled:[ \t]\+0/anamon_enabled: 1/g' /etc/cobbler/settings sudo sed -i "s/default_name_servers:.*/default_name_servers: \['$ipaddr'\]/g" /etc/cobbler/settings sudo sed -i 's/enable_menu:[ \t]\+1/enable_menu: 0/g' /etc/cobbler/settings -sudo sed -i "s/manage_forward_zones:.*/manage_forward_zones: \['ods.com'\]/g" /etc/cobbler/settings +domains=$(echo $NAMESERVER_DOMAINS | sed "s/,/','/g") +sudo sed -i "s/manage_forward_zones:.*/manage_forward_zones: \['$domains'\]/g" /etc/cobbler/settings sudo sed -i 's/pxe_just_once:[ \t]\+0/pxe_just_once: 1/g' /etc/cobbler/settings sudo sed -i "s,^default_password_crypted:[ \t]\+\"\(.*\)\",default_password_crypted: \"$cobbler_passwd\",g" /etc/cobbler/settings sudo sed -i 's/^RewriteRule/# RewriteRule/g' /etc/httpd/conf.d/cobbler_web.conf @@ -75,7 +80,8 @@ CBLR_PASSWD=${CBLR_PASSWD:-"cobbler"} (echo -n "$CBLR_USER:Cobbler:" && echo -n "$CBLR_USER:Cobbler:$CBLR_PASSWD" | md5sum - | cut -d' ' -f1) >> /etc/cobbler/users.digest sudo sed -i "s/listen-on[ \t]\+.*;/listen-on port 53 \{ $ipaddr; \};/g" /etc/cobbler/named.template -sudo sed -i "s/allow-query[ \t]\+.*/allow-query\t\{ 127.0.0.0\/8; 10.0.0.0\/8; 192.168.0.0\/16; 172.16.0.0\/12; $subnet; \};/g" /etc/cobbler/named.template +subnet_escaped=$(echo $SUBNET | sed -e 's/[\/&]/\\&/g') +sudo sed -i "s/allow-query[ \t]\+.*/allow-query\t\{ 127.0.0.0\/8; 10.0.0.0\/8; 192.168.0.0\/16; 172.16.0.0\/12; $subnet_escaped; \};/g" /etc/cobbler/named.template echo "$HOSTNAME IN A $ipaddr" >> /etc/cobbler/zone.template diff --git a/install/compass.sh b/install/compass.sh index 6adab78d..ac8a1a0d 100755 --- a/install/compass.sh +++ b/install/compass.sh @@ -14,14 +14,34 @@ copygit2dir() fi git clone $repo $destdir } +copylocal2dir() +{ + destdir=$1 + repo=$2 + if [ -d $destdir ];then + echo "$destdir exists" + else + mkdir -p $destdir + fi + sudo \cp -rf $repo/* $destdir +} cd $SCRIPT_DIR #export ipaddr=$(ifconfig $NIC | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') ##SUBNET=${SUBNET:-$(ip address| grep "global $NIC" |cut -f 6 -d ' ')} WEB_HOME=${WEB_HOME:-'/tmp/web/'} ADAPTER_HOME=${ADAPTER_HOME:-'/tmp/adapter/'} -copygit2dir $WEB_HOME 'https://github.com/huawei-cloud/compass-web' -copygit2dir $ADAPTER_HOME 'https://github.com/huawei-cloud/compass-adapters' +## copygit2dir $WEB_HOME 'https://github.com/huawei-cloud/compass-web' +## copygit2dir $ADAPTER_HOME 'https://github.com/huawei-cloud/compass-adapters' +WEB_SOURCE=${WEB_SOURCE:-'https://github.com/stackforge/compass-web'} +ADPATER_SOURCE=${ADAPTER_SOURCE:-'https://github.com/stackforge/compass-adapters'} +if [ $source != local ]; then + copygit2dir $WEB_HOME $WEB_SOURCE + copygit2dir $ADAPTER_HOME $ADAPTER_SOURCE +else + copylocal2dir $WEB_HOME $WEB_SOURCE + copylocal2dir $ADAPTER_HOME $ADAPTER_SOURCE +fi # download dependences wget http://github.com/downloads/bitovi/javascriptmvc/$JS_MVC.zip @@ -90,6 +110,7 @@ sudo \cp -rf $COMPASSDIR/conf/setting /etc/compass/ sudo \cp -rf $COMPASSDIR/conf/compassd /etc/init.d/ sudo \cp -rf $COMPASSDIR/bin/*.py /opt/compass/bin/ sudo \cp -rf $COMPASSDIR/bin/*.sh /opt/compass/bin/ +sudo \cp -rf $COMPASSDIR/bin/compass /usr/bin/ sudo \cp -rf $COMPASSDIR/bin/chef/* /opt/compass/bin/ sudo \cp -rf $COMPASSDIR/conf/compassd /usr/bin/ sudo \cp -rf $WEB_HOME/public/* /var/www/compass_web/ diff --git a/install/dependency.sh b/install/dependency.sh index 242b0539..b0c3df3f 100755 --- a/install/dependency.sh +++ b/install/dependency.sh @@ -5,7 +5,7 @@ echo 'Installing Required packages for Compass...' sudo yum install -y rsyslog ntp iproute openssh-clients python git wget python-setuptools python-netaddr python-flask python-flask-sqlalchemy python-amqplib amqp python-paramiko python-mock mod_wsgi httpd squid dhcp bind rsync yum-utils xinetd tftp-server gcc net-snmp-utils net-snmp python-daemon sudo easy_install pip==1.2.1 -sudo pip install flask-script flask-restful Celery six discover unittest2 pychef +sudo pip install flask-script flask-restful Celery six discover unittest2 pychef requests sudo chkconfig httpd on sudo chkconfig squid on diff --git a/install/install.conf b/install/install.conf index 1ff0a271..ffb9105c 100755 --- a/install/install.conf +++ b/install/install.conf @@ -20,6 +20,8 @@ export OPTION_ROUTER= IP_RANGE= # TFTP server's IP address(Default: Management Interface/eth0 IP) export NEXTSERVER= +# the domains covered by nameserver +export NAMESERVER_DOMAINS= # set the default cobbler user "cobbler" password, if not set, the default will be cobbler/cobbler CBLR_USER= @@ -44,3 +46,8 @@ export CHEF_PASSWD=root1234 # Set Compass-web and Compass-adpater variables WEB_HOME= ADAPTER_HOME= + +if [[ -n $source ]] && [ $source = "local" ];then + export WEB_SOURCE=${DIR}/../web + export ADAPTER_SOURCE=${DIR}/../misc +fi diff --git a/install/install.sh b/install/install.sh index 82d770e9..06c416af 100755 --- a/install/install.sh +++ b/install/install.sh @@ -43,12 +43,21 @@ trap 'errtrap $LINENO $?' ERR # Install figlet sudo yum -y install figlet >& /dev/null - figlet -ctf slant Compass Installer +while [ $1 ]; do + flags=$1 + param=${flags/'--'/''} + var=$(echo $param | cut -d"=" -f1) + val=$(echo $param | cut -d"=" -f2) + export $var=$val + shift +done + # Load variables source $DIR/install.conf - +echo $WEB_SOURCE +echo $ADAPTER_SOURCE loadvars() { varname=${1,,} @@ -81,8 +90,8 @@ loadvars() fi } -echo $NIC loadvars NIC "eth0" +export netmask=$(ifconfig $NIC |grep Mask | cut -f 4 -d ':') export ipaddr=$(ifconfig $NIC | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') export range=$(echo "$(echo "$ipaddr"|cut -f 1 -d '.').$(echo "$ipaddr"|cut -f 2 -d '.').$(echo "$ipaddr"|cut -f 3 -d '.').100 $(echo "$ipaddr"|cut -f 1 -d '.').$(echo "$ipaddr"|cut -f 2 -d '.').$(echo "$ipaddr"|cut -f 3 -d '.').250") export ipnet=$(ip address| grep "global $NIC" |cut -f 6 -d ' ') @@ -90,7 +99,7 @@ loadvars SUBNET $(ipcalc $ipnet -n |cut -f 2 -d '=')/$(ipcalc $ipnet -p |cut -f loadvars OPTION_ROUTER $(route -n | grep '^0.0.0.0' | xargs | cut -d ' ' -f 2) loadvars IP_RANGE "$range" loadvars NEXTSERVER $ipaddr - +loadvars NAMESERVER_DOMAINS "ods.com" echo "Install the Dependencies" source $DIR/dependency.sh diff --git a/install/test.sh b/install/test.sh deleted file mode 100755 index b34a9931..00000000 --- a/install/test.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -source install.conf - -sudo figlet Compass Installer - -loadvars() -{ - varname=${1,,} - eval var=\$$(echo $1) - - if [[ -z $var ]]; then - echo "Please enter the DHCP $varname (Example: $2) " - while read input - do - if [ "$input" == "" ]; then - echo "Default $varname '$2' chosen" - export $(echo $1)="$2" - break - else - if [[ ( "$input" != *.* ) && ( "$1" != "NIC" ) ]]; then - echo "I really expect IP addresses" - exit - elif [ "$1" == "NIC" ]; then - sudo ip addr |grep $input >& /dev/null - if [ $? -ne 0 ]; then - echo "There is not any IP address assigned to the NIC '$input' yet, please assign an IP address first." - exit - fi - fi - echo "You have entered $input" - export $(echo $1)="$input" - break - fi - done - fi -} - - -loadvars NIC "eth0"