|
|
执行环境: centos 6u3' T7 M+ z+ l0 Z( h' Z: \% \
heat版本:icehouse-eol9 J5 A9 B$ X% b# b7 _+ |
python版本:2.7.9( p, b4 p: s1 l
gcc环境:4.8.27 w/ u% x" Q! y$ O1 L& H8 K
- C2 J" o- [0 U' H3 g第一步:下载heat源码包
. m0 y! ^) }4 ]8 A/ V9 ?5 G2 }7 V7 l7 h$ L' ]% f8 L% G
地址:https://github.com/openstack/heat. v+ j6 d E4 F, d; W8 T9 i
根据tag选定自己对应的openstack版本源码包% _+ x& [+ N& Z; a M1 t
( @: G* b, i, w
) K) {% {! h1 _0 r; ?7 W2 v第二步:安装pip环境* `5 I7 L/ i) ^) ?' I
1,下载easy_install https://pypi.python.org/pypi/setuptools
: \+ I3 B" c- l, f2,对应的zip包下载下来后,进到目录,解压,执行python setup.py install' \6 ?, S3 R; e! u3 y- Q/ y
3,easy_install -U pip
) i$ s1 A8 |$ O- ~0 g8 m3 B4,验证:pip -V
: t9 q; z1 G o+ ^) A: [
7 Z9 z6 R. c0 w3 L$ ?$ W2 G3 E' F
第三步:安装python和gcc环境; G2 I1 I3 l p- g. Q
## python环境安装
( i( T. u, B& Gpython包地址:https://www.python.org/ftp/python/2.7.9/# B3 z3 W+ s: D; k3 U4 t
./configure8 P+ O, V; ?" ^% B" ^
make
4 R! g6 R2 @6 D! ^make install
. b, ]& n: P6 N0 o8 h8 P
4 Y* ?8 Z. X! b P# z( i S+ l------------------------------------
' P* F, E) s$ {3 g% w( A## gcc环境安装
2 }/ \6 I' d: s( Z+ t" D. E) B) ~wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz # 下载gcc源码- a1 _, _- j8 C6 e3 f
tar zxvf gcc-4.8.2.tar.gz # 解压源码
, g! X, S" K$ x: R% h7 c7 J% hcd gcc-4.8.2 # 进入源码目录
) v3 P2 [" x }2 ~' o: }# Y./configure
& o$ [/ Q1 ~- _: q w! |5 tmake; make install# P* U+ ^ F2 Q# ]3 |: I0 R6 N
export PATH={gcc路径}/bin/:$PATH #修改环境变量
7 n: O+ k9 S Y% C% Q' r; }2 X1 W' K7 C* m( S( {
9 Z/ x4 y; K3 g7 P第四步:构建python虚拟环境! G+ l$ q B& j, N: @/ x0 _& U+ f
为什么要走这一步:虚拟环境是一个将不同的项目所需求的环境依赖分别放在一个独立地方的工具,比如说项目A依赖与python2.7环境,项目2依赖python3.6环境,如果在一台机器上如何解决?这个时候这个工具就可以打包依赖环境,帮助解决这个难题。5 o' ^8 f$ c" j" a4 E" E: E% a( z
1,pip install virtualenv #安装virtualenv工具6 ]& V6 b) p. M( Z+ P
2,为一个工程创建一个虚拟环境:
! i9 V) a) B& p, u6 a0 Q cd my_project_folder- X$ {: l4 L% O
virtualenv -p /usr/local/bin/python2.7 test_project
1 \& z2 n* h0 a3,要开始使用虚拟环境,其需要被激活:
& @8 Y. @: v8 R5 P- M0 A% | source test_project/bin/activate (如果要停止使用,执行deactivate)# o* e) D1 p4 }
4,如果命令行开头出现(test_project)打头,说明已经进入虚拟环境,可以执行python -V, 看下当前python版本是否与指定的一致。1 o# N. R: d8 i6 P4 [& o
' l! q. b) {5 o+ w
& ]" g9 ]4 f+ `% S8 t第四步:编译安装heat包) ^; U: T) g7 b) S$ T) i8 [
1,将heat源码放入test_project目录下
* R; U* ?/ W7 j) L+ A2,cd test_project/heat, pip install -r requirements.txt #安装heat环境所需的依赖。
: v2 A* B& }3 u. {9 Y. ]4 a3,sh install.sh #将heat源码放入site-package中
, x8 i3 o0 S! R8 I7 r+ A/ X4,利用 tox 生成配置文件
4 V5 R6 A* I& z! ^ cd {heat 源码路径}2 V# ^% R& r5 \+ l6 ~! o& t2 c
pip install tox4 X9 j: c& Z+ c1 t% {6 Z
tox -egenconfig
) O+ F$ q2 O( Y 查看config-generator.conf, 上面有注明配置文件产出路径。
* u% Y. l1 F- m6 p! U5,deactivate环境,打包test_project。传入要安装heat的机器中。; H3 ^/ g4 A0 A$ T4 g% M
& b5 _% G1 R" ]0 ]4 ~/ ~: F9 W6 J5 i1 p
- r3 S6 [) E2 I" D1 |! D第五步:安装mysql, rabbitmq
! ], |0 H& ]) o1 h" q& A: Z1,安装mysql步骤省略,自行百度。。9 d1 H9 b- F# b# c
2,创建heat数据库 create database heat' D- }0 L" _. B6 u# f
3,安装rabbitmq
- D$ n6 k$ s) k! }; ]+ ^$ O& O, F 源码包地址:http://www.rabbitmq.com/releases ... c-unix-3.3.5.tar.gz) z" v e% A/ G6 k) u0 P0 T! h
tar -zxvf rabbitmq-server-generic-unix-3.3.5.tar.gz。进入rabbitmq_server-3.3.5/sbin ,rabbitmq的操作命令均在此目录下$ \: ]/ D- l. Y( p1 S. K, ^
- ~ B7 K2 y. z/ }: t
& i$ M6 a; t& ]. [
安装依赖:0 A' K" Q" \2 N$ Q2 r
erlang,python-simplejson9 i- U- ]& p6 _( y) {
/ F# C0 E& M' Y2 W' _/ F! w1 P) u$ a! v$ [" ~6 w
开启服务:
@; ]+ b* W F) P ./rabbitmq-server & #默认端口5672
9 R& e) O; c. W* i0 p' C- Z$ G: x" }& J! I6 T8 K X
4 h" M- d* S# q6 }7 {! j; U
增加用户并给用户设定域访问权限:0 L6 m, |% x4 R2 P$ h% K
./rabbitmqctl add_user rabbit rabbit; k+ |7 B& C L- |8 H( _4 t
./rabbitmqctl set_user_tags rabbit administrator: Y2 z7 Y, p0 E8 u# y1 |# F2 s
./rabbitmqctl set_permissions -p / rabbit "." "." ".*"
+ ^& ~# \! L8 q% y+ ^, {6 u9 t) k/ T9 ~$ K8 Q9 g4 d1 P8 @: S
2 R) k6 F2 M* F- r2 n. F
验证是否开启:6 T) k6 K# Y, q- ]+ l
netstat -npl | grep 5672
1 ^) B" x- j4 L- r; s6 a* b1 h
7 R+ G. A D) @/ l6 Q6 [6 |# H9 ?$ r5 s0 O% e
第六步:在keystone中创建heat的服务和账号* a" u4 }: F7 c2 j
Configure service user and role:
: W* R" u: R, K" `1 G* i keystone user-create --name=heat --pass=service_pass
0 M3 H. h& v& o' c% {0 q* H+ N keystone user-role-add --user=heat --tenant=service --role=admin
5 L% i4 _, ]* j' Q x7 j2 h8 I3 _
2 s% O7 |/ [9 g% J& H
9 l/ ~* S u+ ~ o: u% v第七步:配置heat配置文件1 C- m2 |4 V7 A* c1 s. ~
文件路径默认是在/etc/heat/heat.conf
J. J* p( |& V: z% u5 F[keystone_authtoken]$ {- G- K& E1 D* `; i
admin_password = xxx
9 P" _( R" c+ ]: w" n6 t4 W& w* oadmin_tenant_name = service8 l9 X! D& s+ o. A& i' v9 F
admin_user = heat6 K+ Z5 q3 y! @% v6 f. @3 {0 v( x; }
auth_host = xxxx5 ~& `% R2 X0 W) [$ o9 x: D
auth_port = 35357
5 K9 U& u1 K; o* k1 S3 P% u2 H/ z& J& {auth_protocol = http
; R. x# x8 [) Qauth_uri = xxx3 e% t( m S' }5 p* [
auth_version = v2.0 #这个可以注释掉,需要依据你的keystone配置。我是使用了默认的3 _4 @2 w# V3 |9 l. e
5 b( R( G, m) }8 \, J& S( ^ V O7 }- h- |9 `) Z- V
0 p+ b& V0 K+ T, @3 ^
[DEFAULT]2 O5 I/ c. g/ J$ ~. N! b
rpc_backend = rabbit1 s+ J8 q! j1 _3 c( I) M) w0 F5 J; `
5 h- L N) E; p% }% I* X3 [) s" V
) v# n1 ~! v/ d {
[database]
3 P# O1 x/ m ~" i2 q5 }6 _connection = mysql+pymysql://root:xxx@xxx/heat) i7 O9 W. U) j% [. b) @2 M
1 b5 _$ q" c( B) d2 f) d
, _' D8 S2 v' L7 `第八步:生成数据库" d: V ]4 [8 e6 H
进入python虚拟环境包的bin目录下/ w8 [1 M. G) [* F6 V* |
./python2.7 heat-manage db_sync
6 u' B/ a8 O6 M6 B p$ S
& @: }8 N# l3 @8 s8 Z' J7 W( V第九步:启动heat-api heat-api-cfn heat-engine服务$ K1 _* p" q& x
进入python虚拟环境包的bin目录下
& E3 P; d: n# R6 B1 Y./python2.7 heat-api &
4 s4 m! e- f( k# }1 @; {./python2.7 heat-api-cfn &
+ P. ? i3 \! y! K5 o/ w1 W* J./python2.7 heat-engine &
3 n3 D! F& Q( n7 E; m
- k! v1 F' I: S
$ t% l8 E3 C6 n& ~( s5 R服务起来了,可以ps -ef 查下对应进程。这个里面写的还是不完美,后续会持续更新,包括封装一个启动bin文件(包含服务的start, stop), 指定配置文件和日志的路径等。
3 h- B+ w: U$ u |
|