|
|
楼主 |
发表于 2017-6-3 15:24:35
|
显示全部楼层
Havana于2013年10月份发布,稳定版本为2013.2。相信很多Openstack爱好者和开发测试人员已经开始使用了。作为IaaS架构平台,Openstack面向的是集群主机虚拟化和资源的半自动化调配。但是作为测试和开发使用,尤其是在有限成本控制下,多主机测试在资金和空间占用上耗费较多。所以我们寻求在单主机下实现Openstack的运行。! s. F- m& [" n7 w! e" z) ]/ ^4 v
本文面向的读者:% G7 o% s1 ~- _0 Z; ^" b
- 具备基本的Openstack知识(逻辑架构和组成部分)
% n! D) o; H8 l3 y5 X% k: S5 X- 熟悉基本的Linux操作和配置。本文使用的是Ubuntu12.04 LTS Server版,这也是Openstack官方测试所选择的Linux发行版。
' I# I6 Z7 i1 O4 t2 b
a N- u) d8 n既然是单主机系统,那就对主机的配置稍有要求。我用的是Dell的PC服务器,4核,4G内存,500G硬盘,单网卡。这也应该算是最低配置了。说起网卡,Havana官方文档建议的是采用双网段(可以区分内网管理和外网服务),这也就要求我们的服务器具有两个物理端口。因为我们是测试环境,无需区分网络,所以单网卡可以满足要求,只是需要检查单网段下Havana是否工作正常。
8 | a( P1 A# r3 A# h: H6 K5 \" P1 \* i# J' l$ n
因为是单机安装,存储和网络相对都简单化了,所以这里我们暂时不会涉及对象存储(Object Storage),块存储(Block Storage)和网络,以后我会讲如何仿真。
7 T1 o8 N( ?6 R% @ a
3 \1 [5 J7 U5 ^5 d; q安装会涉及到如下几部分。
6 k2 |) J# t6 L: j操作系统的基本配置6 E- T' p0 t7 R: Z: @! a2 S
配置认证服务(Identity Service)1 |, T/ K/ E& L' Z
配置镜像服务(Image Service)
2 M/ K5 C3 Z- I8 G0 w& ?配置云计算服务(Compute Services)! w' `# T: u) |$ T4 X3 R$ w
增加用户面板(Dashboard)
' L7 b* Y; J" \' A7 c* d$ k注:本文所有的操作命令都是在Ubuntu 12.04 LTS Server版的root用户下执行,所以请先进入root用户模式(sudo -i)以方便执行。0 \4 A, e; a2 r1 |2 y% i3 g
1. 操作系统的基本配置
4 N9 m8 [' T* `
1 s4 J P2 Y' E% U, p1.1 网络配置# V x; I3 p8 a, d& b+ T
* }* O0 n' a0 |2 i* j
由于我们只有单网卡,OS的网络配置在你安装系统的时候就已经完成了,所以在此无需配置。针对Openstack的内部网段,我们可以通过虚拟桥接方式实现。你可以手工配置,当然Openstack安装的时候也会自动配置,这里我们先略过不谈。$ d0 j$ I& K, S
1.2 NTP配置
7 m; D% ^8 }# j& O0 c& |4 _8 G5 I' e
因为是单机安装,无需配置NTP Server。) U! {2 d7 k' a7 M/ j
1.3 安装MySql数据库# A" d0 @9 [/ {8 S- a. G1 M, N
8 b! [ R: ^0 m4 c
Openstack服务需要数据库来存储信息。我们就拿常用的MySql来举例。需要安装客户端,数据库和Python库。
- U) P% T1 G; F; E. _3 q4 u6 |* L# apt-get install python-mysqldb mysql-server! v2 U8 [, X2 ]$ T4 O7 ^$ ^, d
安装时,会需要你设置root用户密码。Openstack要求MySql没有匿名用户权限,所以你需要删除匿名用户和无关的数据库。下面这个命令可以实现。
6 q+ U6 z3 }1 p8 q- a9 U. p/ D% j# mysql_secure_installation
V; B) T {1 w7 c9 P, M运行以后,会有一些选项,全选yes就ok。
1 T: a" t' m; c8 v. V1.4 准备Openstack包
n& ~# J& o' @% s. J" f6 D6 E5 G& j9 }: b2 w4 j* n7 B
在Ubuntu下,需要安装一些针对Havana的最新的包。- z, r: ~3 L0 v7 i! U6 u
# apt-get install python-software-properties
( ]6 V: S3 ~! n3 R. i0 _# add-apt-repository cloud-archive:havana
9 {: g$ _4 F& s; B) O/ ~* g这些包安装完后,你需要升级一下系统。
1 s, s0 G- Y: I* P# g8 W# apt-get update && apt-get dist-upgrade
. E" K) m0 d9 A! ~6 e, a/ z1.5 安装消息队列服务& ~2 H3 V5 s; e2 `/ P
" K( U# G8 s; |
Openstack默认选用了RabbitMQ。也支持Qpid和ZeroMQ。
* y8 D) C& Q- Z( N" a# apt-get install rabbitmq-server
, r( U4 w5 Q3 o4 T$ O2. 配置认证服务(Identity Service)5 r+ t# n# E) w. s/ }2 L
9 z$ n, s" G- I& x1 k: ]1 R2.1 安装认证服务(Keystone)
( ~& P) J) q- o9 H9 T/ k6 N
% E/ m+ `0 ]- ?. F: ^0 h# apt-get install keystone python-keystone python-keystoneclient3 r4 d5 Y2 o" Z- j( J( |2 x3 \
我们在mysql里为认证服务创建一个数据库,名字就叫做keystone,密码也是keystone R9 I; b: |6 `$ A9 U7 Y" _
# mysql -u root -p/ F8 ?7 m3 N. E5 {2 t
mysql> CREATE DATABASE keystone;* } [/ H. v- O4 s! E! D/ Z
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
+ [% i, m1 r5 e( [) }mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';3 |- P, O1 ~; R* ]7 }/ k" e* c2 P
修改Keystone的配置文件/etc/keystone/keystone.conf,使其指向我们刚刚创建的数据库。修改[sql]部分如下:
9 K, O2 e. D0 G6 j8 W2 G8 b; Q[sql]: \( i6 v! k9 U' u
# The SQLAlchemy connection string used to connect to the database
) c, d- f8 k8 g1 a5 j+ `connection = mysql://keystone:keystone@localhost/keystone
, p+ _, M1 `+ `接下来创建keystone需要的表格。
) R( R; ?* s$ L' F% \& Q# keystone-manage db_sync5 n! \) y. b0 P5 Y
生成admin的token。; i/ i+ J2 o! L
# openssl rand -hex 109 l* V5 v3 r' R6 k* X
还是编辑/etc/keystone/keystone.conf,把上面生成的token替换下面的ADMIN_TOKEN
" D! Q, Y( n- D0 @! u[DEFAULT]
* ]1 ^+ W/ U" i2 K1 d+ R2 k# A "shared secret" between keystone and other openstack services
) ~; r) O+ g. }8 M: uadmin_token = ADMIN_TOKEN, A4 e& z! R) y2 U* ]3 N1 k
重启认证服务
1 {5 I: y- |& ]. V& k# service keystone restart( d1 [! J; ^" M0 r
+ u% x% Q( h) S# u' Y2.2 定义用户(Users)、租户(Tenants)和角色(Roles)$ C% B/ L. T4 q1 e3 y; G+ l- E; ~
$ a, s8 S8 R5 t5 n; f) [5 I
在使用认证服务的时候,你需要一对用户名和密码。目前我们还没有创建任何用户,但我们可以使用之前创建的管理token。需要做的就是把这个token传给keystone命令(参数为--token)。为了避免每次使用keystone命令都加一些相同的参数,我们可以把这些参数值放到环境变量里。
( d0 m+ I( W2 H$ v/ X+ x# export OS_SERVICE_TOKEN=ADMIN_TOKEN
3 R A. u; U. P# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
7 ~2 m, f5 s0 j3 M* h5 v7 ~其中endpoint指明认证服务在哪运行。下面创建租户。
4 U! X0 v' n. E# keystone tenant-create --name=admin --description="Admin Tenant"
* l( F' |2 a& S5 a' L+ L4 k8 q( X# keystone tenant-create --name=service --description="Service Tenant"* H6 X/ ^0 s i! [& c- c# h
5 F$ x: u9 ~- C1 e. R2 e) n% z5 A创建管理用户。用户密码ADMIN_PASS需要自己指定。
4 F9 H; E3 Q) B8 M4 h3 J* B# keystone user-create --name=admin --pass=ADMIN_PASS --email=admin@example.com
# o3 ^ `7 o; n' }% a0 M! K" s6 Q创建角色
: E# M. Y, \6 b# keystone role-create --name=admin- E3 n- L* D+ d' T* w4 J) j) v
为用户添加角色和租户属性。
0 }. Z) K" ~: ^+ e/ d4 N# keystone user-role-add --user=admin --tenant=admin --role=admin
f! ]0 _# r& U; V, @7 T D0 C& e2.3 定义服务和API接入点(endpoints)- R( d4 ~+ W0 y: C) j2 S
* G3 K. b/ h1 A- Q' G认证服务不光管理着用户属性,还登记所有Openstack服务,包括它自己本身。所以我们注册一个认证服务。
6 ~) B9 i3 l+ C# v* {' f# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service". P1 O/ d7 R! _( Y! q* h
创建成功后会生成一个id,这个id要用在下面这个命令上,以便创建API接入点。
$ o; @! r: ^$ A+ t2 |* C( U# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:5000/v2.0 \" ?! t( g3 v6 R2 a$ }* g
--internalurl=http://127.0.0.1:5000/v2.0 --adminurl=http://127.0.0.1:35357/v2.0
( \" d9 I& d! Q* \8 u& t同样的,当你安装其他Openstack服务时,像Glance,Nova,都要运行类似上面的命令。
) i$ V4 J1 }! y; z6 p) x2 E2.4 验证认证服务是否安装成功
" B: q) L# T9 M# G; y: J! S. X$ `+ Y1 [/ ?* u
先把环境变量取消。0 e2 x& N9 v3 R$ J
# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
* B$ |# v, u7 h, n! M: a( Q制作一个文件,文件名自取,例如ksrc,内容如下,然后source一下它。3 W8 g% K2 a( ?2 D% Q) P
export OS_USERNAME=admin8 U; [9 }& H$ r: w0 l6 X) J9 ~
export OS_PASSWORD=ADMIN_PASS' B. j" M. N' o2 Z
export OS_TENANT_NAME=admin
, M0 Y* M4 w# _4 `( D/ q" V! wexport OS_AUTH_URL=http://127.0.0.1:35357/v2.0
1 A4 y8 B$ ^ T9 V; u4 C- c, I+ v" G" @. M/ l9 N
# source ksrc
* C+ c& ^, i- A
* q4 r$ c3 d- ]% u) t I1 v* ?: D9 w现在你可以尝试获得一下token,如果成功,说明认证服务工作正常。! y0 |& s; a! R* U# x; `/ i N: E7 W- ^
$ keystone token-get+ A R% }+ \, h! r
' R* i) P8 z6 ~; _3. 配置镜像服务/ c* N8 E. n8 m$ f- G
0 C/ a) f7 P# H8 t
很多命令与配置认证服务一样,我就不做过多解释了。
( ]% [! Q/ ]- @* @ n$ o6 m4 J3.1 安装镜像服务(Glance)5 Z# J }* ]7 Q, g! Y
2 C( A# z# k' |, z/ C# y安装glance包。
' k3 H4 [2 P) X( X/ K# apt-get install glance. H2 N" G- r8 b/ m' _* E
删除/var/lib/glance/glance.sqlite,防止错误使用sqlite数据库。- t/ B& [+ L% c
为镜像服务创建数据库,名字叫做glance,密码也是glance
/ }2 W; f1 o. [, p# mysql -u root -p3 a- q( a" r- |! s Z
mysql> CREATE DATABASE glance;
6 J. ~0 W- V, Cmysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';* e: J' E5 L, @
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';* O' R9 ?$ b/ X* E& O' u
生成数据表。5 T8 ^6 p7 Y: }5 j
# glance-manage db_sync0 T1 ^5 O' ]( n) B! ]( |& W" ^
3 s0 W0 X0 t! ^0 B! j ?3 J
keystone里创建glance用户,密码(GLANCE_PASS)自己指定
& Z4 d6 F, D4 P# keystone user-create --name=glance --pass=GLANCE_PASS--email=glance@example.com* F- W7 W$ ~* L! a# j* n: ~ u4 P
# keystone user-role-add --user=glance --tenant=service --role=admin
2 ?; {( F# Z" r9 ]: i+ S1 j修改glance配置文件/etc/glance/glance-api.conf和glance-registry.conf,找到如下部分并修改。1 L& ~5 ~; r: W: R+ m, X
[keystone_authtoken]
% W2 w3 m# C ^) E" _auth_host = 127.0.0.10 z Z% h! }5 e! K& @) U
auth_port = 35357
* d6 @$ p8 J% E! P5 J, u% o" R+ d \auth_protocol = http
0 t; a4 I7 v+ J4 g% \admin_tenant_name = service& M2 |/ Y' N* M& u; v$ Y5 q
admin_user = glance, i- h/ k/ a7 z0 p3 O% U4 D, N# _
admin_password = GLANCE_PASS
" w9 f; w6 @: n6 X6 {' x7 l+ n. V在认证服务里注册镜像服务并创建API接入点。) W8 Y4 i* L+ k
# keystone service-create --name=glance --type=image --description="Glance Image Service"* c6 }4 @. C6 I
# keystone endpoint-create \ u( Z0 Y0 g' j1 o0 x% Y
--service-id=the_service_id_above \
* q: e5 \+ u9 |2 F# s--publicurl=http://127.0.0.1:9292 \" `6 M ?2 m3 T" I
--internalurl=http://127.0.0.1:9292 \
P, G- _ Y2 S--adminurl=http://127.0.0.1:9292
# j: X/ }* r# S' C, @& l. X& J重启服务。
. f7 D3 D6 s, o- l4 ^# service glance-registry restart
3 _; ]0 y$ h4 i, O$ Y# b# service glance-api restart! p$ z7 I/ b, W1 t5 @8 G* L* v
" N7 y& F1 q% v# B- e3.2 验证镜像服务是否安装成功
. _, d! q6 ^/ W1 I3 I
- r/ y' W; r5 `+ j. h1 p( _$ A2 H准备好一个镜像文件,这个镜像文件可以自己制作,也可以从网上下载。我制作了一个Ubuntu12.04 LTS Server的镜像ubuntu_1204_server.qcow2。至于怎么制作镜像,我们另文讨论。! W4 {8 S* L, d8 M6 v3 Y
创建一个镜像。
2 I }+ A. N# v0 h& }0 X1 F+ W' n# glance image-create --name="Ubuntu 12.04 LTS Server" --disk-format=qcow2 \! X( t4 P( J% V
--container-format=bare --is-public=true < ubuntu_1204_server.qcow2
7 o2 f) C" D9 W6 B# o我的镜像如下所示。
; | p3 D3 _6 Z8 L$ Q# glance image-list5 ^* ~! ~! {! G/ U4 H: N- [+ b# _
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+# b s4 Q; Y" [5 C( T
| ID | Name | Disk Format | Container Format | Size | Status |6 P9 w% {& \. ^ ?
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+/ l5 F& B0 I& H6 x2 F
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | qcow2 | bare | 1502347264 | active |
9 V3 v/ N C5 `) s+--------------------------------------+-------------------------+-------------+------------------+------------+--------+
" ^+ `, I0 }* r y. [4. 配置云计算服务3 |7 X7 Z/ U( V8 u) u& h4 ~
; [8 {& t9 ]5 x) M; i4.1 安装nova控制服务
! L r8 ^8 \* ~+ B. v4 v
$ _ ]: @% z: ~( o" }* q# M先安装所需要的包
5 z' @; d* t, t* X) ?9 }! e0 Q# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler python-novaclient
) R' E- O$ W7 Q3 |为nova创建数据库,名字叫做nova,密码也是nova
) |; B3 N+ ?! l3 n" P; \( S# mysql -u root -p3 N! `+ \3 Q) W! f- S# u
mysql> CREATE DATABASE nova;
9 U# j- ?! l8 A- g2 a mmysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';: x+ H! B; z+ x8 {
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
% a) \7 p5 H: }& c编辑nova配置文件/etc/nova/nova.conf,使其指向自己的数据库。
. z& }: B( O% @4 |8 Y8 |2 |[database]3 e) H/ P. H8 m& h
# The SQLAlchemy connection string used to connect to the database
3 F! \& b0 V1 ]+ y Jsql_connection = mysql://nova:nova@localhost/nova
, p) {6 h8 C1 v. x% d0 l还有一些其他需要在配置文件nova.conf里修改或添加的属性,如下所示
1 q/ A, @% T8 z, @1 m/ e, n* R4 Rmy_ip=127.0.0.1
; I% }2 O1 X+ D9 _, G0 v+ Fvncserver_listen=0.0.0.0- C7 s" B3 T( W2 K, X
vncserver_proxyclient_address=127.0.0.1
5 K! Y$ c, l# ? v- ` ^4 `auth_strategy=keystone& [ d2 m( ]9 j' `+ Y9 M/ e2 F
rpc_backend=nova.rpc.impl_kombu
( F" e( o- b9 E! c5 [rabbit_host=127.0.0.1
! e; a! B9 z6 m5 E0 W/ wglance_host=127.0.0.1
; i4 R* |0 y) T) c同时修改/etc/nova/api-paste.ini如下。
- C1 j- j2 X4 a! O[filter:authtoken]) S' Q/ A# u/ ^( G, G* ^
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory2 ^# |4 X; ]5 i$ |
auth_host = 127.0.0.1
# K9 ~7 l t9 G3 ~) _4 yauth_port = 35357' d, {* J' c, j' T7 {5 x1 i4 ~( K
auth_protocol = http6 X# {+ j& f0 G- V4 O$ T# i% o+ Q! _
admin_tenant_name=service
8 M) f3 b& F$ i8 h, Kadmin_user=nova1 j& e. W6 s" n" r/ S5 ^) N3 b
admin_password=nova$ M7 G3 n! b( d" L/ j. r" L2 _1 Y
生成数据表。
) i9 S$ B( N1 J. w$ W# nova-manage db sync3 R0 L. G" E8 l4 u8 U8 Q
接下来就是比较熟悉的命令了,如果命令返回错误,可以重启一下nova服务。
- h1 E% W Y* n- v' N# keystone user-create --name=nova --pass=NOVA_PASS --email=nova@example.com7 ~ n: d d5 l. a0 k% U- d
# keystone user-role-add --user=nova --tenant=service --role=admin* y" p, A' u* Y
# keystone service-create --name=nova --type=compute --description="Nova Compute Service"0 W( _$ Q! |. o1 _
# keystone service-create --name=nova --type=compute --description="Nova Compute Service" --adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s
- Q6 A& W* ]) C. w5 d$ V然后重启一下服务
; V0 L* r6 l* P* T& N4 f# service nova-api restart
5 F+ g J8 Y! L" B4 B4 P$ A# service nova-cert restart" r6 Q2 j7 F3 [+ e* D
# service nova-consoleauth restart3 X! G: o c5 U# o- ^, g5 Q
# service nova-scheduler restart
5 u; C' c: Y |' Y4 u# service nova-conductor restart6 z; I. ~' [* L+ S3 l+ ]
# service nova-novncproxy restart
' A) T1 ?9 ~* J s下面可以检查一下nova是否配置正确,可以用如下命令。
7 [/ T6 V3 _/ A8 \' B9 ~: Q# nova image-list
. C3 X2 X; J* Y3 a- ^1 F+--------------------------------------+-------------------------+--------+--------+
9 ?2 P) G( J8 Z1 D- g| ID | Name | Status | Server |
5 r3 C" v* ]* r |+--------------------------------------+-------------------------+--------+--------+
4 a. _/ n Q: p- B1 d0 m| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE | |
& U* G+ u. `" P6 F4 o; K+--------------------------------------+-------------------------+--------+--------+, i* U `2 P. a( k3 d
4.2 安装一个nova云计算节点
, H% a; W; l# D3 E
$ w* ^! U; i/ n$ d/ \1 i先下载所需要的包。
7 D/ E' G; C, G' c) S1 {# apt-get install nova-compute-kvm python-novaclient python-guestfs
9 \0 `8 w. q# j2 f7 ]删除默认安装的SQLite数据库
2 I6 u3 ^7 O9 w. ~5 T# rm /var/lib/nova/nova.sqlite9 K6 S) t3 e+ }; _
重启计算服务
$ y2 B( b% S4 ~/ B T# c# service nova-compute restart* o; h; G/ n7 c
4.3 激活内部网络
$ a! L; V5 _5 U. D9 v6 @
" K7 u _, Y8 r) n' Z6 |; D9 `这应该算是很关键的一步了。我们选用FlatDHCPManager。以后我会用一个专题讲网络。
0 l# n, J; t1 Y% S下载网络包。/ o; g2 a: Y. S7 i2 Y
# apt-get install nova-network* a& N( u2 `2 {- x* t, [2 [
4 [/ K* V: L2 p/ T/ M* `
编辑配置文件/etc/nova/nova.conf
* u* @( r5 r/ _# p) f, v, L/ S[DEFAULT]6 z9 V; P! O9 \! A9 z7 J
network_manager=nova.network.manager.FlatDHCPManager
+ D j C: }: Z$ i5 k* t0 vfixed_range=192.168.122.0/241 x/ p5 S# n) I) X0 z3 C" D, J0 x
flat_network_dhcp_start=192.168.122.2$ I4 Y" D$ R4 U& y8 d
flat_network_bridge=virbr0
3 `) i& R) h; R; }) T9 h$ F+ d重启网络服务。6 @3 `+ Z2 E3 B# ^1 l6 N+ X5 d
# service nova-network restart
4 _4 a+ y% y; @, b, F. x: x# M* ?3 f x3 r' s0 ]" @
创建自己的虚拟网络。- l3 d1 R9 b+ X% H
# nova network-create vmnet --bridge-interface=virbr0
" V+ ~; k, K' v4 r7 Z4.4 启动一个镜像
7 Y1 F! H7 G9 W4 U Z: u- |
+ \# k, X \& i$ `" t# W$ A生成密钥+ J& ~' z: m$ K; q7 Z: a" q' g
$ ssh-keygen
3 R7 e5 ?) v2 v5 s: _2 F$ cd .ssh
: A& ]5 T+ Z! [. h; L$ nova keypair-add --pub_key id_rsa.pub mykey
4 Y+ f8 d2 \% r如果你需要自己的镜像实例能被ping通和ssh,需要放开如下权限
+ F C% o s8 T8 e7 i+ J' L) G# nova secgroup-add-rule defaulttcp 22 22 0.0.0.0/03 \& R9 |( F) u* y
# nova secgroup-add-rule defaulticmp -1 -1 0.0.0.0/0
. ], @9 S5 f* Z# T0 _
! [; b1 f' ~) F$ S启动实例
: v. s6 F) T& F L$ B7 d0 K$ nova boot --flavor <flavor-id> --key_name mykey --image <image-id> --security_group default Ubuntu
+ h4 A! E# k9 A6 y; K* Q7 ]以下是我的例子。
) ~6 b% T; O3 J* S6 J2 M' _( B# nova flavor-list
( }9 w6 J& @3 V6 y+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+) z; n0 _- A! I5 F
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
4 |# }' a& ~( J1 C/ C8 m+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
' v$ u- j8 |; b. p9 V5 q/ B| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
1 l) P5 j# n0 B" _| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |% x8 }+ ^ _% y
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |( ]3 i/ E+ A/ E; Q
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
9 L2 A0 T1 I% b/ Z9 V; H9 f9 G| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |2 D, c; |0 p( D! ]6 `5 B; d
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+' e( e' S$ k" P; O9 J8 ~: `, s! c
9 S% G0 r, m5 f* q/ u5 M
# nova image-list
6 h* l9 ^. @6 y5 d. S9 T. W+--------------------------------------+-------------------------+--------+--------+5 v9 C- G" z. [3 {* v
| ID | Name | Status | Server |) E% m8 A$ c4 @. s
+--------------------------------------+-------------------------+--------+--------+2 u4 q9 l9 E t: n* ?# [) ^
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE | |. M+ e0 @7 O5 j" t# G+ b9 L
+--------------------------------------+-------------------------+--------+--------+& C0 g# o+ d! J+ W( v0 N
: a$ ] w% J! ^/ M1 e# nova list$ _, o" ^( c( s# a
+--------------------------------------+--------+--------+------------+-------------+---------------------+
- K# v, z7 y- g' q0 i| ID | Name | Status | Task State | Power State | Networks |2 l& m& N% P) ^& }) }) G) N( F
+--------------------------------------+--------+--------+------------+-------------+---------------------+, b7 \% T: B- n4 T3 z
| eff82154-bd75-40a7-bc83-60ba0f5b2ac4 | ubuntu | ACTIVE | None | Running | vmnet=192.168.122.2 |) e& p d8 ?! R. h
+--------------------------------------+--------+--------+------------+-------------+---------------------+
6 W# p' c+ s+ h. X" |% U( Z$ _) p/ A: o8 I4 N% n7 T: ]2 ]& M* M, ?
5. 增加用户面板1 o2 x* Z+ m5 E* U3 i
" P% @# o0 s" k8 X
这个非常简单,安装完以后就可以访问了。
" r9 L' X4 L- j, w: {* p# apt-get install memcached libapache2-mod-wsgi openstack-dashboard
! j1 r3 _& u2 M$ o* H接着访问http://<your-host-id>/horizon,是不是很简单。开始你的openstack之旅吧。
. V9 n6 p5 f5 x: x8 [4 p |
q; l7 p" K7 {0 m/ F8 m' }7 P' q
4 v/ h/ Z4 Y `9 W$ {* \& [% y
4 |; a% z# k5 ^* c4 \) m9 {& Q' b) G! ^6 e! s" V, ?( ]
0 b* A5 Q* {: ?$ J! R
# h: c$ v9 J+ [* F | / l9 x1 V# b7 F C
4 E0 T L* B* \% j; X5 E7 U1 T
| + f0 F7 N& u. P% ]& K) K4 I: F+ P" q
|
|