|
|
本文介绍如何在Ubuntu 14.04 LTS 上安装Juno版的Keystone, 我们采用的是手动安装的方式, 同时仅针对OpenStack的身份与访问管理系统Keystone. 事实上OpenStack不同服务之间提供了非常高的一致性, 对Keystone安装的把握能够帮助理解如何部署OpenStack.! a6 A0 x4 @4 J1 M3 \; h
- N5 s; u6 ~7 m0 L1 v
本文分别介绍了利用操作系统的包管理机制和利用源代码安装. 源码安装时还可以让Keystone运行在一个独立的虚拟环境中. 本文对应的系统环境是已经安装了Python 2.7.x的Ubuntu.7 }# v: O$ G7 } `0 q) X
( X/ j# a$ w& K" L+ t! \ $ I; j# r; z3 Q, N0 \% p9 B
: y: [ [" `& P身份数据库
# q1 B5 g B J! \( t1 n! a0 c
% L2 b. w5 d, _# ? Keystone的身份数据库可以使用SqLite和MySQL等存储后端, 如果选择特定的数据库, 应该在使用Keystone前安装这些目标数据库, 并为Keystone专门建表建库. 这里以使用MySQL为例.# G1 k& c- N' f1 J' U& ?
+ X L9 A* p3 ~0 ~
安装MySQL, 过程中会要求设置根用户口令.! l) t+ R t, e3 t
6 W# G& U' o5 U( M+ Z
$ apt-get install mysql-server python-mysqldb: |& i/ o# }+ k
d( X4 w" [- R! Z6 B- u1 w% f( _, a3 c% E
为Keystone创建用户和数据库.
0 j2 K0 O8 H2 g
+ G5 [: [4 r" c6 t$ K/ t* U$ mysql -uroot -p
. v3 U$ u* L/ b- k$ RootPass( M7 y* \$ K0 S# L* j+ N
> create database keystone;
. I/ v* y5 e6 z> grant all on keystone.* to 'keystone'@'localhost' identified by 'KeystonePass';8 q0 [2 B% p6 u1 i- n; C$ \
> quit J! q) r& c8 a9 G/ ?$ e& D% t
如果采用SqLite作为存储后端, 只需要在后续配置Keystone时设置驱动和存储文件即可.6 y5 y0 k6 w, c, I( Z
* A5 a$ M' j0 W
9 D& @8 b9 I: m. t- [: b. E一. 包安装Keystone
; ^4 N$ ~9 D( ?7 i
, d6 O3 T/ Y, z& k# _# h U7 k g( Z OpenStack俨然已经成为Ubuntu, RedHat等系统厂商的宠儿, 这些系统提供商对这个项目的支持方便了用户的部署, 利用Ubuntu的包管理工具, 我们可以非常容易地部署OpenStack的任意项目. 由于包安装的方式极为简便, 我们需要确保的就是在Ubuntu的云存档种获得我们需要版本的OpenStack组件.3 E9 G% K# y2 s7 p8 o7 Y
. Q$ [9 }) E% R4 M. S% i- C5 y 添加 Juno 版 OpenStack的存档库(Icehouse 等版本的操作类似):3 l: i9 f4 p2 D- |: s# J2 d
7 Z$ o9 L/ X9 f: ^
复制代码
7 m' G" f+ [, r. u7 t& K% J$ sudo add-apt-repository cloud-archive:juno
6 X6 u. v% z' ^2 q+ h. E$ n( o1 k
P! q& |8 X [2 U! K6 nUbuntu Cloud Archive for OpenStack Juno8 V* ^, R* s+ q* U0 K% p5 R
More info: https://wiki.ubuntu.com/ServerTeam/CloudArchive
" s$ L2 c1 ^4 _ b) {Press [ENTER] to continue or ctrl-c to cancel adding it
) \5 T) f$ {* J7 H...- Y! c* B) e$ w0 \$ l2 |( _
复制代码
9 ~6 `. r( m3 D
& ~5 w! E1 i0 w# p
: y3 T- s! O0 _2 m x" h% K1 h8 T 接着更新安装包列表:
. m4 T* [2 ?; w, p6 b4 }3 Y
! o$ ]; C# `# E" l3 ~$ sudo apt-get update( T4 u" w4 h# h- H# ^% [4 n
; u0 _; j8 @% V. i$ D. ]! `% m
: r% c. {1 z# k1 W' H' m 事实上此时已经可以安装Juno 版 OpenStack的任意组件了:
; Q3 g/ f5 _6 [7 \7 G; ~, T" U( Q% j/ X$ A' Y0 ]
$ sudo apt-get install keystone5 X; G' f; |, C: |' j
K" P- p9 K; X; q& [# |/ I
3 C& C. B2 ]2 w6 @- e/ i; q' J 二. 源码安装Keystone
) I' s$ `5 O+ M
* b+ N- |) r. C1 @ 安装git,用来下载源码:$ o; P y4 _/ \# j2 M$ v4 ?5 P
( `* _4 D( I3 `; H7 Q$ sudo apt-get install git
7 b9 T8 ?3 k L5 F/ i / {! ]$ h( _2 V5 \
" U5 `# B( c; d8 E 获取源码, 会在当前 shell 的工作目录下生成一个名为"keystone"的目录用来同步源码, 也可以更改路径和目录名, 具体参考Git clone指令.
, S9 ~+ ^7 b9 c
; `7 r3 X* r; R5 s/ L$ git clone https://github.com/openstack/keystone
) F- v% J$ {/ n! Z6 f$ A " p4 B; D8 l7 }" Y9 c
: s6 f; y. `9 ?& |& C/ H OpenStack基本基于Python实现, 依赖的大多数项目都可以从Python的包目录Pypi上获取, 但是根据具体的操作系统, 有一些依赖关系是无法使用Python的包管理解决的, 所以我们需要在安装Keystone的代码前先满足这些依赖.( D; I( m N. [; e1 |! k3 i
; T* ^9 l: O( R! g+ R& P/ d: J$ sudo apt-get install python-dev libxml2-dev libxslt1-dev \; J7 u4 F1 q# g$ b4 X3 S. d
libsasl2-dev libsqlite3-dev libssl-dev libldap2-dev libffi-dev k( Y% `( f4 A* ~5 f5 l0 t! P8 c$ b
; J* T2 g$ M( |( D1 f
1 f, ?- v: h2 k( n8 ~$ d 从Pypi上获取Python包需要借助pip或easy_install, 这里以pip为例, 安装pip.5 e8 F( ^# Z1 [) v. T* B
) V' ^1 B ~! d
$ wget https://bootstrap.pypa.io/get-pip.py+ o: t+ M% L- j9 `) ~
$ python get-pip.py
& o, I4 W$ b& _/ Q: W $ S* {# z& ` Q
9 j0 ^8 P7 N! \7 N! a) [0 r8 ] 虚拟环境安装7 e0 F3 @" k5 p7 ~
; M/ t, m- D b J8 p
接下来就可以从源码安装Keystone了, 如果要在虚拟的Python环境中运行它, 执行这两条指令, 否则查看 "非虚拟环境安装" .1 d: W! l3 S- v, |1 N( |# x
, W0 V. R- d. ^, L5 K0 {" s. a% ^$ cd keystone- \+ P+ t2 L; x0 `- Z
$ python tools/install_venv.py
( { E6 B2 Y: V) E
% ~8 L$ S! M' J; r% r L$ g: \
5 K' r8 I& |9 F/ o H* M; z$ p 上述命令将在keystone/.venv目录下安装Keystone的虚拟运行环境, 通过下面的命令启动或关闭虚拟运行环境:* ^, M, m# a4 @) N
( l# K2 o& h3 y9 s
$ source .venv/bin/activate #开启
# R- K/ A" b( t F1 L7 j7 o f+ _* @$ X1 z$ deactivate #关闭
4 T! x- V) I4 E$ i5 h, _1 m2 b. @- n3 Z
3 ?, z/ B' H% y7 N/ Q: u7 q) I: B8 U. y7 |9 S/ T
非虚拟环境安装
( v' ?7 B5 F- O3 e( r
: L7 K( a% c6 Z* K 如果不想在虚拟环境下运行Keystone:
7 N Z! @& S% i) w$ b8 u( F+ }& e2 l4 Z: Y6 C( D+ ^) C
$ sudo pip install -r requirements.txt #安装Keystone运行依赖
. T+ d {6 o% h; q- n. B, K% @$ E9 q$ python setup.py develop #将keystone链入Python的本地包
8 [- v% @) z; @
/ m! S5 I4 ^+ Y+ Z- k k
. k6 p- d4 m/ i' ?$ h. _+ o2 M6 ?! o" w 验证安装完成: \+ n2 q+ x3 ^3 L4 {+ \
/ b' c5 p0 }5 L; N: @. W 至此源码安装完成, 在虚拟环境下:
: I3 t) }- U2 H6 H$ o% V& Y6 K$ l) m+ Q5 G, j9 R# c) Z5 g
$ source .venv/bin/activate
$ s/ ], n2 c, e/ \6 r3 R$ python
+ e' ]1 J( L- t% {) a; S) r # z# @: _- h1 S, h+ K
% U) v" B- q7 p X
或在非虚拟环境下:
- O+ E' r8 w: x" n7 Q! @, q! P3 ~+ p; a4 L! Z$ P
$ python
8 @. m" w1 e1 p$ W$ x' a9 K g 0 a) U3 u/ b! t6 n/ r, O8 C
: \* y6 [" X+ R
在Python的交互界面中import keystone, 看看是否成功, 如果没有异常, 说明keystone已经被正确安装了.
+ N7 v4 `( e7 k; r, ^>>> import keystone6 l: J* _. e6 |# Y/ ]
>>>
* G' v0 o$ @( K% w 这些工作也可以写成脚本执行, 虽然针对的只是Keystone, 但安装的逻辑和流程同样适用于OpenStack的其他项目.+ m4 Y! [. T3 p
1 Q5 s. |" v( g 安装完成的Keystone并不能运行, 接下来需要对其进行配置和初始化 |
|