From 055e69bb824c5b1ad56ce371d98193553a645798 Mon Sep 17 00:00:00 2001 From: Weidong Shao Date: Fri, 10 Jan 2014 23:20:31 +0000 Subject: [PATCH] Update Compass install script and config management code --- .../config_management/utils/config_manager.py | 3 ++- .../utils/config_merger_callbacks.py | 6 +++--- compass/hdsdiscovery/hdmanager.py | 4 ++-- .../utils/test_config_merger.py | 3 ++- install/chef.sh | 2 +- install/cobbler.sh | 18 ++++++++++-------- install/compass.sh | 11 +++++++++-- install/dependency.sh | 2 ++ install/install.conf | 2 +- install/install.sh | 7 ++++--- 10 files changed, 36 insertions(+), 22 deletions(-) diff --git a/compass/config_management/utils/config_manager.py b/compass/config_management/utils/config_manager.py index 87e682ed..914872c3 100644 --- a/compass/config_management/utils/config_manager.py +++ b/compass/config_management/utils/config_manager.py @@ -62,7 +62,8 @@ CLUSTER_HOST_MERGER = ConfigMerger( ), ConfigMapping( path_list=['/networking/global'], - from_upper_keys={'default': 'default_no_proxy'}, + from_upper_keys={'default': 'default_no_proxy', + 'clusterid': 'clusterid'}, from_lower_keys={'hostnames': '/hostname', 'ips': '/networking/interfaces/management/ip'}, to_key='ignore_proxy', diff --git a/compass/config_management/utils/config_merger_callbacks.py b/compass/config_management/utils/config_merger_callbacks.py index a22a97fc..5879090c 100644 --- a/compass/config_management/utils/config_merger_callbacks.py +++ b/compass/config_management/utils/config_merger_callbacks.py @@ -346,12 +346,12 @@ def assign_from_pattern(_upper_ref, _from_key, lower_refs, to_key, def assign_noproxy(_upper_ref, _from_key, lower_refs, - to_key, default=[], hostnames={}, ips={}, - **_kwargs): + to_key, default=[], clusterid=1, + hostnames={}, ips={}, **_kwargs): """Assign no proxy to hosts.""" no_proxy_list = deepcopy(default) for _, hostname in hostnames.items(): - no_proxy_list.append(hostname) + no_proxy_list.append('%s.%s' % (hostname, clusterid)) for _, ip_addr in ips.items(): no_proxy_list.append(ip_addr) diff --git a/compass/hdsdiscovery/hdmanager.py b/compass/hdsdiscovery/hdmanager.py index 60ac9f4b..266c0a9d 100644 --- a/compass/hdsdiscovery/hdmanager.py +++ b/compass/hdsdiscovery/hdmanager.py @@ -68,9 +68,9 @@ class HDManager: """ # List all vendors in vendors directory -- a directory but hidden # under ../vendors - all_vendors = [o for o in os.listdir(self.vendors_dir) + all_vendors = sorted(o for o in os.listdir(self.vendors_dir) if os.path.isdir(os.path.join(self.vendors_dir, o)) - and re.match(r'^[^\.]', o)] + and re.match(r'^[^\.]', o)) logging.debug("[get_vendor]: %s ", all_vendors) for vname in all_vendors: diff --git a/compass/tests/config_management/utils/test_config_merger.py b/compass/tests/config_management/utils/test_config_merger.py index b72afa3e..04c75d65 100644 --- a/compass/tests/config_management/utils/test_config_merger.py +++ b/compass/tests/config_management/utils/test_config_merger.py @@ -150,7 +150,8 @@ class TestConfigMerger(unittest2.TestCase): ), config_merger.ConfigMapping( path_list=['/networking/global'], - from_upper_keys={'default': 'default_no_proxy'}, + from_upper_keys={'default': 'default_no_proxy', + 'clusterid': '/clusterid'}, from_lower_keys={'hostnames': '/hostname', 'ips': '/networking/interfaces/management/ip'}, to_key='ignore_proxy', diff --git a/install/chef.sh b/install/chef.sh index 68951a12..1beafae2 100755 --- a/install/chef.sh +++ b/install/chef.sh @@ -1,4 +1,4 @@ -#!bin/bash +#!/bin/bash ##export ipaddr=$(ifconfig $NIC | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') echo "$ipaddr $HOSTNAME" >> /etc/hosts diff --git a/install/cobbler.sh b/install/cobbler.sh index a6145d00..37ba2c1a 100755 --- a/install/cobbler.sh +++ b/install/cobbler.sh @@ -1,3 +1,6 @@ +#!/bin/bash + + echo "Installing cobbler related packages" sudo yum -y install cobbler cobbler-web createrepo mkisofs python-cheetah python-simplejson python-urlgrabber PyYAML Django cman debmirror pykickstart -y @@ -10,7 +13,6 @@ 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 sed -i 's/^#fudge[ \t]\+127.127.1.0[ \t]\+stratum.*$/fudge 127.127.1.0 stratum 8/g' /etc/ntp.conf sudo service ntpd restart # configure xinetd @@ -35,15 +37,15 @@ sudo cp /etc/cobbler/settings /root/backup/cobbler/ sudo cp /etc/cobbler/dhcp.template /root/backup/cobbler/ # Dumps the variables to dhcp template -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 +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 "/range dynamic-bootp/c\ range dynamic-bootp $IP_RANGE;" /etc/cobbler/dhcp.template -sudo sed -i "/next-server/c\ next-server $NEXTSERVER;" /etc/cobbler/dhcp.template -sed -i 's/^\([ \t]*\).*fixed-address.*$/\1#pass/g' /etc/cobbler/dhcp.template -sudo sed -i "/allow bootp/a deny unknown-clients;" /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 # Set up other setting options in cobbler/settings -sudo sed -i "/next_server/c\next_server: $ipaddr" /etc/cobbler/settings +sudo sed -i "/next_server/c\next_server: $NEXTSERVER" /etc/cobbler/settings sudo sed -i "s/server:[ \t]\+127.0.0.1/server: $ipaddr/g" /etc/cobbler/settings sudo sed -i 's/manage_dhcp:[ \t]\+0/manage_dhcp: 1/g' /etc/cobbler/settings sudo sed -i 's/manage_dns:[ \t]\+0/manage_dns: 1/g' /etc/cobbler/settings @@ -73,9 +75,9 @@ 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; };/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 -echo "$HOSTNAME A $ipaddr" >> zone.template +echo "$HOSTNAME IN A $ipaddr" >> /etc/cobbler/zone.template sudo cp /etc/xinetd.d/rsync /root/backup/ sudo sed -i 's/disable\([ \t]\+\)=\([ \t]\+\)yes/disable\1=\2no/g' /etc/xinetd.d/rsync diff --git a/install/compass.sh b/install/compass.sh index 174c524c..6adab78d 100755 --- a/install/compass.sh +++ b/install/compass.sh @@ -17,6 +17,7 @@ copygit2dir() 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' @@ -31,11 +32,17 @@ sudo \cp -rf $JS_MVC/. $WEB_HOME/public/ # update squid conf sudo rm /etc/squid/squid.conf sudo cp $COMPASSDIR/misc/squid/squid.conf /etc/squid/ +sudo sed -i "/acl localnet src 10.0.0.0/i\acl localnet src $SUBNET" /etc/squid/squid.conf sudo chmod 644 /etc/squid/squid.conf sudo mkdir -p /var/squid/cache sudo chown -R squid:squid /var/squid sudo service squid restart +# update /etc/resolv.conf +echo "DNS1=$ipaddr" >> /etc/sysconfig/network-scripts/ifcfg-$NIC +echo "DOMAIN=ods.com" >> /etc/sysconfig/network-scripts/ifcfg-$NIC +service network restart + # Install net-snmp sudo yum install -y net-snmp-utils net-snmp net-snmp-python if [ ! -d "/usr/local/share/snmp/" ]; then @@ -51,7 +58,7 @@ sudo cp -r /var/lib/cobbler/snippets /root/backup/cobbler/ sudo cp -r /var/lib/cobbler/kickstarts/ /root/backup/cobbler/ sudo rm -rf /var/lib/cobbler/snippets/* sudo cp -r $ADAPTER_HOME/cobbler/snippets/* /var/lib/cobbler/snippets/ -#sudo cp -rf /etc/chef-server/chef-validator.pem /var/lib/cobbler/snippets/chef-validator.pem +sudo cp -rf /etc/chef-server/chef-validator.pem /var/lib/cobbler/snippets/chef-validator.pem sudo chmod 777 /var/lib/cobbler/snippets sudo chmod 666 /var/lib/cobbler/snippets/* sudo rm /var/lib/cobbler/kickstarts/default.ks @@ -111,5 +118,5 @@ cd $COMPASSDIR sudo python setup.py install sudo sed -i "/COBBLER_INSTALLER_URL/c\COBBLER_INSTALLER_URL = 'http:\/\/$ipaddr/cobbler_api'" /etc/compass/setting sudo sed -i "/CHEF_INSTALLER_URL/c\CHEF_INSTALLER_URL = 'https:\/\/$ipaddr/'" /etc/compass/setting -sudo sh /opt/compass/bin/refresh.sh +sudo sh /opt/compass/bin/refresh.sh --init figlet -ctf slant Installation Complete! diff --git a/install/dependency.sh b/install/dependency.sh index 110409ec..242b0539 100755 --- a/install/dependency.sh +++ b/install/dependency.sh @@ -1,3 +1,5 @@ +#!/bin/bash + 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 diff --git a/install/install.conf b/install/install.conf index f83689b7..1ff0a271 100755 --- a/install/install.conf +++ b/install/install.conf @@ -12,7 +12,7 @@ export PACKAGE_INSTALLER=chef export NIC= # DHCP config -# SUBNET variable specifies the subnet for DHCP server. Example: 192.168.0.0 +# SUBNET variable specifies the subnet for DHCP server. Example: 192.168.0.0/16 export SUBNET= # DHCP option router address(Default is your management interface IP address )" export OPTION_ROUTER= diff --git a/install/install.sh b/install/install.sh index 12d351ba..4d56ec3a 100755 --- a/install/install.sh +++ b/install/install.sh @@ -81,9 +81,10 @@ loadvars() echo $NIC loadvars NIC "eth0" export ipaddr=$(ifconfig $NIC | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') -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") -loadvars SUBNET $(ipcalc $(ip address| grep "global $NIC" |cut -f 6 -d ' ') -n|cut -f 2 -d '=') -loadvars OPTION_ROUTER $ipaddr +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 ' ') +loadvars SUBNET $(ipcalc $ipnet -n |cut -f 2 -d '=')/$(ipcalc $ipnet -p |cut -f 2 -d '=') +loadvars OPTION_ROUTER $(route -n | grep '^0.0.0.0' | xargs | cut -d ' ' -f 2) loadvars IP_RANGE "$range" loadvars NEXTSERVER $ipaddr