Update Compass install script and config management code

This commit is contained in:
Weidong Shao 2014-01-10 23:20:31 +00:00
parent 8dd3cbf3a6
commit 055e69bb82
10 changed files with 36 additions and 22 deletions

View File

@ -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',

View File

@ -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)

View File

@ -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:

View File

@ -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',

View File

@ -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

View File

@ -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

View File

@ -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!

View File

@ -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

View File

@ -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=

View File

@ -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