设为首页 收藏本站
查看: 801|回复: 0

[经验分享] 简化 Openstack Havana 版 compute 节点部署程序

[复制链接]

尚未签到

发表于 2018-6-2 10:45:30 | 显示全部楼层 |阅读模式
#!/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 = '192.168.220.1'
        self.localIPaddr  = '192.168.220.1'
        self.URL = 'http://%s/source/'%self.masterIPaddr
        self.nova_path  = '/etc/nova/'
    def install_packstack(self):
        yum_path = '/etc/yum.repos.d/'
        # epel 源目前不在更新OpenStack Havana版本,在下载源的时候默认已经移植了目录结构 ,需要重新安装RDO,在修改源路径,才能正常安装OpenStack 等
        comds = "https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/rdo-release-havana-9.noarch.rpm"
        commands.getstatusoutput(cmd)
        try:
            cmd = "https://repos.fedorapeople.org/repos/openstack/EOL/openstack-havana/rdooo-release-havana-9.noarch.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=https://repos.fedorapeople.org/repos/openstack/EOL/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):
        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 libguestfs-winsupport""")
            #ip = self.localIPaddr.split('.')
            #hostname = "athCompute.%s.%s.autohome.com.cn"%(ip[2],ip[3])
            #os.system("hostname %s"% hostname)
            #os.system(""" sed -i 's/^HOSTNAME=.*/HOSTNAME=%s/' /etc/sysconfig/network """%hostname)
            os.system("easy_install psutil")
            os.system("easy_install ipdb")
        except:
            LOG(traceback.format_exc())
    def install_compute_source(self):
        try:
            cmd = " wget %s/athCloudOpenStack.tgz  -O /opt/athCloudOpenStack.tgz"%self.URL
            x,y = commands.getstatusoutput(cmd)
            if x == 0:
                os.chdir('/opt/')
                os.system(""" tar -xzvf athCloudOpenStack.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.example'):
                    shutil.move('nova.conf.example','nova.conf')
                    self._nova_conf()
                self._start_nova_compute()
            else:
                LOG("wget athCloudOpenStack.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()  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-506174-1-1.html 上篇帖子: Install and Configure OpenStack Object Storage (Swift) 下篇帖子: 五分钟了解什么是Openstack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表