首页 > 其他 > 详细

简化 Openstack H 版 compute 节点部署脚本

时间:2014-03-26 15:04:51      阅读:626      评论:0      收藏:0      [点我收藏+]
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item   :  Install Openstack Compute
@Author :  william
@Group  :  Network System Group
@Date   :  2014-03-20
@Funtion:
    Function: Depoly Openstack Compute  ...
"""
import os,sys,time
import traceback,shutil
import commands
import re
def LOG(info):
    """ 程序错误日志记录 ...."""
    logfile = ‘/tmp/openstack_compute_install.log‘
    files = open(logfile,‘a‘)
    try:
        files.write(‘%s : %s‘%(time.ctime(),info))
    except IOError:
        files.close()
    files.close()
class DepolyCompute(object):
    def __init__(self):
        print "Please write in the script master IP public IP and local management ... \n"
        self.masterIPaddr = ‘10.9.0.100‘
        self.localIPaddr  = ‘10.9.0.101‘
        self.URL = ‘http://%s/source/‘%self.masterIPaddr
        self.nova_path  = ‘/etc/nova/‘
    def install_packstack(self):
        """ 定制YUM 源 """
        yum_path = ‘/etc/yum.repos.d/‘
        try:
            cmd = "yum install -y http://rdo.fedorapeople.org/rdo-release.rpm"
            x,y = commands.getstatusoutput(cmd)
            if x != 0:
                fp = open(‘%s/rdo-release.repo‘%yum_path,‘w‘)
                fp.write("""[openstack-havana] \n""")
                fp.write("""name=OpenStack Havana Repository \n""")
                fp.write("""baseurl=http://repos.fedorapeople.org/repos/openstack/openstack-havana/epel-6/ \n""")
                fp.write("""enabled=1 \n""")
                fp.write("""skip_if_unavailable=0 \n""")
                fp.write("""gpgcheck=1 \n""")
                fp.write("""gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Havana \n""")
                fp.write("""priority=98 \n""")
                fp.close()
            cmd = "rpm -Uvh http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm"
            x,y = commands.getstatusoutput(cmd)
            if x != 0:
                fp = open(‘%s/epel.repo‘%yum_path,‘w‘)
                fp.write("""[epel] \n""")
                fp.write("""name=Extra Packages for Enterprise Linux 6 - $basearch \n""")
                fp.write("""#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch \n""")
                fp.write("""mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch \n""")
                fp.write("""failovermethod=priority \n""")
                fp.write("""enabled=1 \n""")
                fp.write("""gpgcheck=1 \n""")
                fp.write("""gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 \n""")
                fp.write(""" \n""")
                fp.write("""[epel-debuginfo] \n""")
                fp.write("""name=Extra Packages for Enterprise Linux 6 - $basearch - Debug \n""")
                fp.write("""#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug \n""")
                fp.write("""mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch \n""")
                fp.write("""failovermethod=priority \n""")
                fp.write("""enabled=0 \n""")
                fp.write("""gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 \n""")
                fp.write("""gpgcheck=1 \n""")
                fp.write(""" \n""")
                fp.write("""[epel-source] \n""")
                fp.write("""name=Extra Packages for Enterprise Linux 6 - $basearch - Source \n""")
                fp.write("""#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS \n""")
                fp.write("""mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch \n""")
                fp.write("""failovermethod=priority \n""")
                fp.write("""enabled=0 \n""")
                fp.write("""gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 \n""")
                fp.write("""gpgcheck=1 \n""")
                fp.close()
        except:
            LOG(traceback.format_exc())
    def install_kvm_compute(self):
        """ YUM 安装虚拟化包,openstack compute 包"""
        try:
            os.system(""" yum -y install kvm libvirt qemu virt-*""")
            os.system(""" yum -y install lrzsz gcc sysstat net-snmp-* """)
            os.system(""" yum -y install openstack-nova-compute openstack-nova-network """)
        except:
            LOG(traceback.format_exc())
    def install_compute_source(self):
        """  下载开发完成的nova 源码包,解压,并初始化"""
        try:
            cmd = " wget %s/kx-openstack.tgz  -O /opt/kx-openstack.tgz"%self.URL
            x,y = commands.getstatusoutput(cmd)
            if x == 0:
                os.chdir(‘/opt/‘)
                os.system(""" tar -xzvf kx-openstack.tgz -C /""")
                os.chdir(self.nova_path)
                if os.path.exists(‘nova.conf‘):
                    shutil.move(‘nova.conf‘,‘nova.conf.default‘)
                if os.path.exists(‘nova.conf.compute.example‘):
                    shutil.move(‘nova.conf.compute.example‘,‘nova.conf‘)
                    self._nova_conf()
                self._start_nova_compute()
            else:
                LOG("wget kx-openstack.tgz false")
                sys.exit()
        except:
            LOG(traceback.format_exc())
    def _start_nova_compute(self):
        try:
            servers = [‘openstack-nova-compute‘,‘openstack-nova-network‘,‘openstack-nova-extend‘,‘libvirtd‘]
            for i in servers:
                os.system(""" /sbin/service %s restart """ %i)
                os.system(""" /sbin/chkconfig %s on """ %i)
        except:
            LOG(traceback.format_exc())
    def _nova_config(self):
        # Compute node nova.conf init
        try:
            fp = open(‘%s/nova.conf‘%self.nova_path)
            f = fp.readlines()
            fp.close()
            for n, s in enumerate(f):
                if re.match(‘#?glance_api_servers.*‘,s):
                    f[n] = ‘glance_api_servers=%s:9292\n‘ %self.masterIPaddr
                if re.match(‘#?metadata_host.*‘,s):
                    f[n] = ‘metadata_host=%s  \n‘ %self.masterIPaddr
                if re.match(‘#?qpid_hostname.*‘,s):
                    f[n] = ‘qpid_hostname=%s\n‘ %self.masterIPaddr
                if re.match(‘#?novncproxy_base_url.*‘,s):
                    f[n] = ‘novncproxy_base_url=http://%s:6080/vnc_auto.html \n‘ %self.masterIPaddr
                if re.match(‘#?sql_connection.*‘,s):
                    str = s.split(‘@‘)[0] + ‘@%s/nova‘%self.masterIPaddr
                    f[n] = ‘%s \n‘ %str
                if re.match(‘#?my_ip.*‘,s):
                    f[n] = ‘my_ip=%s\n‘ %self.localIPaddr
                if re.match(‘#?vncserver_listen.*‘,s):
                    f[n] = ‘vncserver_listen=%s\n‘ %self.localIPaddr
                if re.match(‘#?vncserver_proxyclient_address.*‘,s):
                    f[n] = ‘vncserver_proxyclient_address=%s\n‘ %self.localIPaddr
            fp = open(‘%s/nova.conf‘%self.nova_path,‘w‘)
            fp.writelines(f)
            fp.close()
        except Exception,e:
            LOG(traceback.format_exc())
if __name__ == "__main__":
    sc = DepolyCompute()
    sc.install_packstack()
    sc.install_kvm_compute()
    sc.install_compute_source()


本文出自 “willaim” 博客,请务必保留此出处http://swq499809608.blog.51cto.com/797714/1384332

简化 Openstack H 版 compute 节点部署脚本,布布扣,bubuko.com

简化 Openstack H 版 compute 节点部署脚本

原文:http://swq499809608.blog.51cto.com/797714/1384332

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!