简化 Openstack Havana 版 compute 节点部署程序

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/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  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()


相关文章
|
网络协议 Linux 网络安全
openstack 云平台一体化部署(超详细)
openstack 云平台一体化部署(超详细)
1371 0
openstack 云平台一体化部署(超详细)
|
5月前
|
消息中间件 缓存 Shell
跟我一起来学OpenStack部署
跟我一起来学OpenStack部署
375 0
|
6月前
|
存储 数据安全/隐私保护 Docker
Kolla-ansible部署openStack
Kolla-ansible部署openStack
523 11
|
存储 弹性计算 资源调度
openstack组件部署 3
openstack组件部署
168 0
|
8月前
|
Linux 网络安全 数据库
openstack 部署单节点
在CentOS 7系统上,配置了一台拥有4核CPU、8GB内存和300GB磁盘的服务器,安装了OpenStack Trian版本。安装完成后,获取了OpenStack管理控制台的登录凭证(admin用户和密码),可访问IP地址192.168.200.249/dashboard进行登录。如果遇到问题,可能需要重新安装以确保纯净环境。
357 0
|
8月前
|
存储 Ubuntu KVM
Ubuntu部署OpenStack踩坑指南:还要看系统版本?
Ubuntu部署OpenStack踩坑指南:还要看系统版本?
Ubuntu部署OpenStack踩坑指南:还要看系统版本?
|
8月前
|
存储 安全 Linux
云计算|OpenStack|社区版OpenStack安装部署文档(一 --- 前期硬件准备和部署规划)
云计算|OpenStack|社区版OpenStack安装部署文档(一 --- 前期硬件准备和部署规划)
1524 0
|
负载均衡 安全 网络安全
openstack组件部署 4
openstack组件部署
|
存储 数据管理 数据安全/隐私保护
openstack组件部署 2
openstack组件部署
105 0
|
存储 消息中间件 关系型数据库
openstack组件部署 1
openstack组件部署
172 0