|
|
楼主 |
发表于 2017-6-3 15:24:35
|
显示全部楼层
Havana于2013年10月份发布,稳定版本为2013.2。相信很多Openstack爱好者和开发测试人员已经开始使用了。作为IaaS架构平台,Openstack面向的是集群主机虚拟化和资源的半自动化调配。但是作为测试和开发使用,尤其是在有限成本控制下,多主机测试在资金和空间占用上耗费较多。所以我们寻求在单主机下实现Openstack的运行。3 X' h, D: \- L/ r
本文面向的读者:
8 N4 {# [9 l! X _( i7 q. e* E+ l- 具备基本的Openstack知识(逻辑架构和组成部分)
" S. ]1 p2 A. S d3 f8 c. D- F- 熟悉基本的Linux操作和配置。本文使用的是Ubuntu12.04 LTS Server版,这也是Openstack官方测试所选择的Linux发行版。% v+ @& W% u' S$ S9 h# J
4 }4 Q/ L/ l- ]; i% I& @4 r P6 [
既然是单主机系统,那就对主机的配置稍有要求。我用的是Dell的PC服务器,4核,4G内存,500G硬盘,单网卡。这也应该算是最低配置了。说起网卡,Havana官方文档建议的是采用双网段(可以区分内网管理和外网服务),这也就要求我们的服务器具有两个物理端口。因为我们是测试环境,无需区分网络,所以单网卡可以满足要求,只是需要检查单网段下Havana是否工作正常。0 ], {3 ~9 P$ l( ]8 Q8 I
2 y# N& c7 e8 E: p/ _1 F
因为是单机安装,存储和网络相对都简单化了,所以这里我们暂时不会涉及对象存储(Object Storage),块存储(Block Storage)和网络,以后我会讲如何仿真。+ }. H- ^) h" n3 B
9 C5 _2 ], G2 u5 t' o$ I' b1 P! c& T安装会涉及到如下几部分。
( g% r t3 Y3 I操作系统的基本配置7 A" @" {) o7 O0 N5 U9 M
配置认证服务(Identity Service)
2 ]7 F( j3 {2 h, X配置镜像服务(Image Service)
7 V/ Q, u* R1 P+ m4 S! q配置云计算服务(Compute Services)7 Q1 u8 s6 Q+ f
增加用户面板(Dashboard)
2 s/ s3 G! w w: H, J/ x注:本文所有的操作命令都是在Ubuntu 12.04 LTS Server版的root用户下执行,所以请先进入root用户模式(sudo -i)以方便执行。
7 u: X+ `' F6 }9 b1. 操作系统的基本配置5 Q/ I `4 P' x! J9 @. D
* F3 [; d0 U) R# n$ G1.1 网络配置. |: \. K! ]5 E" ]
5 l$ s( ?* ~% L: T8 @1 Z/ e
由于我们只有单网卡,OS的网络配置在你安装系统的时候就已经完成了,所以在此无需配置。针对Openstack的内部网段,我们可以通过虚拟桥接方式实现。你可以手工配置,当然Openstack安装的时候也会自动配置,这里我们先略过不谈。, X$ `3 W8 x; X- v! p
1.2 NTP配置
R9 b$ o0 w2 u
0 S0 |4 V- Q& P3 Y8 Y" X因为是单机安装,无需配置NTP Server。
* N2 u: Y1 b3 N. |1.3 安装MySql数据库6 E! J; a) N' }- O
& ?5 E: }1 Z: R2 a; d+ ^
Openstack服务需要数据库来存储信息。我们就拿常用的MySql来举例。需要安装客户端,数据库和Python库。
5 C! r% q: X6 J7 C: S: p1 _# apt-get install python-mysqldb mysql-server
4 G* ? d# L+ b S安装时,会需要你设置root用户密码。Openstack要求MySql没有匿名用户权限,所以你需要删除匿名用户和无关的数据库。下面这个命令可以实现。1 D- q' z, Q9 N8 G3 w
# mysql_secure_installation
! t1 T+ d. K; V, _运行以后,会有一些选项,全选yes就ok。5 J v' S5 e7 P6 H
1.4 准备Openstack包
2 V c( M5 w& r# }: i4 x/ T: F! o/ l4 x0 A
在Ubuntu下,需要安装一些针对Havana的最新的包。
5 Z) {) w# ~& j$ z0 e# apt-get install python-software-properties l% k$ ~2 q/ P S7 a9 w$ N! ^
# add-apt-repository cloud-archive:havana
$ y7 j. B' u: J q$ W这些包安装完后,你需要升级一下系统。
- B0 O4 c" O+ }% T, W, D1 a# apt-get update && apt-get dist-upgrade Y* ], E+ \2 l
1.5 安装消息队列服务" c' g. H) e3 ^0 g+ ?. O
7 D$ @* ?& ~$ D. b) R% e
Openstack默认选用了RabbitMQ。也支持Qpid和ZeroMQ。- Y, |( n; F. H( }( i: o
# apt-get install rabbitmq-server( ~4 F* v6 M! u, F
2. 配置认证服务(Identity Service)/ m. J3 l" h( K% Q
8 j" o0 i& J2 [4 z4 f' D! i
2.1 安装认证服务(Keystone)
8 c( e" ?2 O) t# O7 H% N `: y+ o q/ k& I6 g( S8 F* X% [4 `
# apt-get install keystone python-keystone python-keystoneclient
1 N3 |) D4 h' M, n$ b6 \2 _我们在mysql里为认证服务创建一个数据库,名字就叫做keystone,密码也是keystone
2 W L, M0 ?+ z8 v9 k/ O: o# mysql -u root -p
# n9 r/ ^) a. X8 x* R! Dmysql> CREATE DATABASE keystone; x# ~# Y; C* U7 s+ [( T
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';- i. F+ @3 ~* ?2 w- o$ @# G
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';! B1 u o1 f) y7 G" v$ \ E
修改Keystone的配置文件/etc/keystone/keystone.conf,使其指向我们刚刚创建的数据库。修改[sql]部分如下:
m2 o0 J; w' z i+ O2 A7 ], m: K[sql]
' A, G5 z1 O4 C: \* p* c( z/ {# The SQLAlchemy connection string used to connect to the database
7 l: W" X! I/ _9 e1 W1 r* rconnection = mysql://keystone:keystone@localhost/keystone" z. `) l' }1 s- [" L( H, Q& G& P
接下来创建keystone需要的表格。
4 Q: c% R2 U4 P) ?9 P/ \# keystone-manage db_sync0 ^! C2 k) v6 S5 L( N; g
生成admin的token。8 u G; E" T7 b% ~% o* X9 C' o
# openssl rand -hex 10
, G4 p$ A* V9 P8 b* n: Y. S还是编辑/etc/keystone/keystone.conf,把上面生成的token替换下面的ADMIN_TOKEN
3 e; q4 X; K/ Y6 ?$ K[DEFAULT]* r6 R* k2 z( P
# A "shared secret" between keystone and other openstack services d& i% P+ P/ C. @# P) d' M T; K
admin_token = ADMIN_TOKEN
# Y( y6 W$ f, |' N* b# E' d: M重启认证服务
# l1 M; }$ m1 ~; O4 v. ]# service keystone restart
) v) ~: F1 _# Q0 H" U2 L5 { N! l- R9 O+ D" E
2.2 定义用户(Users)、租户(Tenants)和角色(Roles)
9 N4 z8 L1 a$ t2 [4 D
4 @0 P% W8 ^6 J% p( `* d! F! y在使用认证服务的时候,你需要一对用户名和密码。目前我们还没有创建任何用户,但我们可以使用之前创建的管理token。需要做的就是把这个token传给keystone命令(参数为--token)。为了避免每次使用keystone命令都加一些相同的参数,我们可以把这些参数值放到环境变量里。7 D) r# f6 o7 R* A1 V7 |' ^2 B
# export OS_SERVICE_TOKEN=ADMIN_TOKEN. L" Z; i) X6 A! J0 q/ |- }
# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
9 V4 Y1 z& h7 [2 M. @其中endpoint指明认证服务在哪运行。下面创建租户。
. u2 g8 I2 r; z: ?! y! C4 R: R# keystone tenant-create --name=admin --description="Admin Tenant"
# p5 E% n. {" L$ p" g4 S# keystone tenant-create --name=service --description="Service Tenant"
9 ]( h4 ^ O9 v8 h3 C) c9 ^" P( l, x/ y, }# U, }. K! p# J
创建管理用户。用户密码ADMIN_PASS需要自己指定。+ J5 U, |0 |: }, t7 ]
# keystone user-create --name=admin --pass=ADMIN_PASS --email=admin@example.com
3 s' F/ b# A+ U, {9 h8 `创建角色 f0 \& o' |) i2 D) F/ Z
# keystone role-create --name=admin
; {! _8 t/ x9 z" a2 J+ Z为用户添加角色和租户属性。. e! |& H0 E) _
# keystone user-role-add --user=admin --tenant=admin --role=admin; o! `4 x3 t% |9 u7 d4 _4 Q
2.3 定义服务和API接入点(endpoints)
" \8 ]0 k4 q9 ~1 U4 J; S% X% p8 q* y
4 U1 h& Q t% f; m1 {9 T" _* S1 H q认证服务不光管理着用户属性,还登记所有Openstack服务,包括它自己本身。所以我们注册一个认证服务。& _$ d; f/ S4 {8 o
# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
" o3 U, P1 `' i$ @: D6 S* u创建成功后会生成一个id,这个id要用在下面这个命令上,以便创建API接入点。4 _# U& z4 t7 ~
# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:5000/v2.0 \ u6 w! m0 [% I2 m- `8 c
--internalurl=http://127.0.0.1:5000/v2.0 --adminurl=http://127.0.0.1:35357/v2.0
4 G2 e* i( D1 u/ U v2 r0 M- S5 x同样的,当你安装其他Openstack服务时,像Glance,Nova,都要运行类似上面的命令。
" @7 p( a3 _, }" n7 @& g2.4 验证认证服务是否安装成功6 o& B; {3 H+ d- U
% w$ _' X/ q, w" Z8 w7 Q
先把环境变量取消。+ y8 f) j/ G# K* s
# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
v: Q% V$ L' i- T制作一个文件,文件名自取,例如ksrc,内容如下,然后source一下它。
0 R) l& q+ A5 F; }export OS_USERNAME=admin% J* f0 I' D1 _
export OS_PASSWORD=ADMIN_PASS6 P8 q. N7 X1 x9 m
export OS_TENANT_NAME=admin
! D4 M# x8 a3 D" A4 o5 o: D2 xexport OS_AUTH_URL=http://127.0.0.1:35357/v2.0) b2 h3 q# y4 W7 \* T" u
1 p$ ~( L& e/ \# source ksrc8 Y( j6 ~7 E m" X. k
8 |5 l) c2 v0 a2 {- h0 ^
现在你可以尝试获得一下token,如果成功,说明认证服务工作正常。$ z, }& z5 {8 |5 L2 n) F& r
$ keystone token-get
?/ |! y& @( R& y& A
$ W( ]) t3 b3 W% n3. 配置镜像服务
6 n5 k' Q& `5 `9 y& F' A% b. }* E1 \4 P: X3 k+ L
很多命令与配置认证服务一样,我就不做过多解释了。
4 m2 P- i+ i! e2 Y5 d3.1 安装镜像服务(Glance)
2 |! M I" `# ^7 _8 n
7 {7 \7 v+ r9 a" ?7 p8 k' g/ W6 Z安装glance包。9 \% A1 b0 c3 y6 s# L0 C. l
# apt-get install glance
0 i$ N. P2 I p6 j8 P9 P" E, h删除/var/lib/glance/glance.sqlite,防止错误使用sqlite数据库。5 A& h) O- d* H0 z
为镜像服务创建数据库,名字叫做glance,密码也是glance
/ c7 i V- k9 E5 A- L7 ~! x# mysql -u root -p
/ p! J4 L0 x8 i0 ^7 L: Qmysql> CREATE DATABASE glance;
% @4 y2 U' P3 ?7 G+ j5 Tmysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
2 e; a) l+ O8 q5 hmysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
/ D7 T& b' G S- C8 {0 f) d( I生成数据表。" d0 T+ {/ O7 L/ b% v) P) W2 f
# glance-manage db_sync8 X4 m/ ^+ y4 b: e
2 B5 A2 V9 b9 N- D# ?7 D4 L+ p
keystone里创建glance用户,密码(GLANCE_PASS)自己指定
1 ?/ Z& t, v! M! e$ }# keystone user-create --name=glance --pass=GLANCE_PASS--email=glance@example.com6 |+ D7 T5 J% q$ X8 @
# keystone user-role-add --user=glance --tenant=service --role=admin
+ D0 R( }8 R) L( K R修改glance配置文件/etc/glance/glance-api.conf和glance-registry.conf,找到如下部分并修改。
( s0 k5 _0 s3 @$ O }4 S[keystone_authtoken], r" c$ H) Q k& Y
auth_host = 127.0.0.1
) F" N T) X* }0 P i9 h& Xauth_port = 35357
# e2 c( t+ J) U5 F4 P& Xauth_protocol = http# P' p5 d$ J! e3 c. I
admin_tenant_name = service
5 ?; U' k1 A: N6 s, hadmin_user = glance
- z2 H4 _' L- f0 a- g% C% Vadmin_password = GLANCE_PASS
- w! e' l# H5 t- f; L在认证服务里注册镜像服务并创建API接入点。
9 P4 G, P& x# |8 _# keystone service-create --name=glance --type=image --description="Glance Image Service"
- p+ _2 e' Q; e U" M5 B4 o5 w/ U# keystone endpoint-create \
8 v; u6 r9 V/ a2 b* P4 z; a2 ?! V- O+ a6 }- n--service-id=the_service_id_above \0 m8 K; b% s [) l% U d- K5 A
--publicurl=http://127.0.0.1:9292 \, C6 z- T' ]$ p4 _! L. d
--internalurl=http://127.0.0.1:9292 \
) ~- I. L! w0 P7 W7 P. t--adminurl=http://127.0.0.1:9292* k& O8 _1 i( X; f8 s/ r3 R
重启服务。- L7 a, _2 i3 p
# service glance-registry restart
7 ~3 L, i$ ?; G4 X# \9 o4 q# service glance-api restart
! i3 ~( B2 w" `8 ~& T' {! M6 L' \* U
3.2 验证镜像服务是否安装成功, x: ~. S( p: c: c4 T
$ \8 C J' S; o3 ~" S1 A准备好一个镜像文件,这个镜像文件可以自己制作,也可以从网上下载。我制作了一个Ubuntu12.04 LTS Server的镜像ubuntu_1204_server.qcow2。至于怎么制作镜像,我们另文讨论。, t. w& B5 k0 u% H# g+ F0 v3 T
创建一个镜像。4 ]1 \* P1 L9 e) t( k: R
# glance image-create --name="Ubuntu 12.04 LTS Server" --disk-format=qcow2 \
# P; ~6 M% D: J; Q5 g--container-format=bare --is-public=true < ubuntu_1204_server.qcow2
6 @9 i- P9 Y' s我的镜像如下所示。
1 y3 k+ F1 H' I) d; S6 P# glance image-list
9 y+ ^# [3 h! e7 W4 \/ A% h+--------------------------------------+-------------------------+-------------+------------------+------------+--------+5 P" b6 f6 C. ]; Q
| ID | Name | Disk Format | Container Format | Size | Status |, m0 Q& ~3 r4 C. r
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+9 E1 T6 K3 C% p' X5 P+ ^
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | qcow2 | bare | 1502347264 | active |9 X. ^$ g$ H( A* j& i J3 n1 p
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+
" Z2 d6 G. e) `) D8 A. |( c- C5 o4. 配置云计算服务% ^5 E8 M, h; Z- h/ a% X
. J$ w& m3 [7 Z4.1 安装nova控制服务
: K5 w- f3 s' o4 E/ `! T7 h7 x
/ o x1 w! V+ a. G: q先安装所需要的包! S4 H" q7 @0 o( L) _( V |! K
# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler python-novaclient
2 ~/ q% @5 Y/ g3 H, c为nova创建数据库,名字叫做nova,密码也是nova
( A& b4 ]5 X8 Z# mysql -u root -p% } r0 M, i: _" p( z0 g
mysql> CREATE DATABASE nova;
6 X( N/ C! B/ Q! Z% `% m4 z3 _mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
! _ k. {8 I+ u# T9 o" cmysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';" [7 n, \1 U* [$ j8 H+ Z
编辑nova配置文件/etc/nova/nova.conf,使其指向自己的数据库。
9 d+ Q' Q" u0 j" j8 x% V2 k, x[database]5 G6 a# \* H4 G) M) R1 B% D
# The SQLAlchemy connection string used to connect to the database
' p' T4 ?1 N: B7 e9 i: G' psql_connection = mysql://nova:nova@localhost/nova
3 ] C, j7 q O( S% w, ^还有一些其他需要在配置文件nova.conf里修改或添加的属性,如下所示3 u) \& Y( r8 l
my_ip=127.0.0.1/ s% i1 y, [' A. L- f D6 d6 s
vncserver_listen=0.0.0.05 y, h' ?& M. c0 M
vncserver_proxyclient_address=127.0.0.16 t3 C: Z. b: d
auth_strategy=keystone. X0 K0 e( X4 C9 A [
rpc_backend=nova.rpc.impl_kombu
# p3 ], X* E: B% Lrabbit_host=127.0.0.1
* a4 ^& K- T; T- j9 Wglance_host=127.0.0.1
# T/ d4 r, h4 }同时修改/etc/nova/api-paste.ini如下。- V; E# A4 h: v
[filter:authtoken]
1 t& S/ T2 r+ H) A0 [* d/ apaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
0 f( e# }8 D7 zauth_host = 127.0.0.1* N u5 z0 p' W, ?8 i
auth_port = 35357* Z4 c, x! V! H
auth_protocol = http' ^, c/ g J, c
admin_tenant_name=service
: ^+ V! g3 d6 D7 y3 g1 e$ Z1 E# Uadmin_user=nova
5 E3 e9 U6 ^1 s( ~& F' G: Gadmin_password=nova
, p0 b$ T) |7 k& }$ b' j7 Y1 w3 |* ^生成数据表。1 L2 W) G5 O( I6 g: h
# nova-manage db sync
# p0 m/ w+ E8 d+ d3 A y接下来就是比较熟悉的命令了,如果命令返回错误,可以重启一下nova服务。
! h1 y0 W: q7 k; Y& U# keystone user-create --name=nova --pass=NOVA_PASS --email=nova@example.com
! u0 B9 J C' B' a& l2 V1 o+ B# keystone user-role-add --user=nova --tenant=service --role=admin
7 ?; v O, Q$ F$ s, C# keystone service-create --name=nova --type=compute --description="Nova Compute Service"
1 D* W5 Z# x& O2 B5 U9 i# keystone service-create --name=nova --type=compute --description="Nova Compute Service" --adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s9 j% T, X* f7 \, y
然后重启一下服务
3 t4 U2 ^! @4 G3 Z9 K. v& r, c( _2 `# service nova-api restart" H4 v N" I* C+ p5 u# N: |
# service nova-cert restart
5 N; x0 e5 m4 b$ t9 ?# service nova-consoleauth restart6 F& i4 e5 y' b
# service nova-scheduler restart
4 X! P- ]& N4 T$ e9 a$ `# service nova-conductor restart
$ Q$ O) E6 t0 ?* [7 i* R D6 D' |# service nova-novncproxy restart6 F7 ^! |: a; ^, l/ M- H
下面可以检查一下nova是否配置正确,可以用如下命令。. u& X5 U+ I: w; {. Y
# nova image-list4 Y- v5 B& f4 y- O2 C( M+ `
+--------------------------------------+-------------------------+--------+--------+
1 q5 Z9 z* j5 g2 F7 a| ID | Name | Status | Server |$ Q8 ^; R; L, n: j8 K" T3 s7 C
+--------------------------------------+-------------------------+--------+--------+
8 Y: }8 l! `# ~- }& |/ Q| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE | |
' ?1 {' v/ d8 _) d- [$ }+--------------------------------------+-------------------------+--------+--------+
( M/ i e) _3 p4 h' X5 q* r, y4.2 安装一个nova云计算节点+ [6 Z$ ], m5 d$ C
( w4 ]) o' w! A1 i+ ]. ^: r# a先下载所需要的包。
. M' k, e% u2 m. V+ k6 t# apt-get install nova-compute-kvm python-novaclient python-guestfs
$ `/ t! n( B: ^3 d' i删除默认安装的SQLite数据库% ?1 W: U9 H: K" E) j1 w+ i8 a& U
# rm /var/lib/nova/nova.sqlite& {0 K4 L4 c4 a+ e; C" y1 m2 ?
重启计算服务
+ {3 V c U. U4 ~( P5 V# service nova-compute restart
0 Z9 `0 I, c Z5 i" t: d4.3 激活内部网络
3 j8 b! A7 c) |6 |
9 U I( Z* C$ o z. p这应该算是很关键的一步了。我们选用FlatDHCPManager。以后我会用一个专题讲网络。- ~% h+ @8 P4 x) D. Q2 M6 n
下载网络包。8 B6 _2 i- K0 z
# apt-get install nova-network7 g7 |: l' K- h4 u0 q- B
8 _% ^1 [; g q8 E编辑配置文件/etc/nova/nova.conf7 w/ W" j# n. ]2 U: C! c( H
[DEFAULT]
" I8 v( h2 A- g7 r9 y4 c2 j: \network_manager=nova.network.manager.FlatDHCPManager; J! j! U N# |' M2 E: w% y
fixed_range=192.168.122.0/24
* |' G; Q2 O* Q3 b: bflat_network_dhcp_start=192.168.122.2$ Y; w$ \/ l( b# h [
flat_network_bridge=virbr0
, U/ d- [8 u1 I( T" X: F重启网络服务。# I' x4 E. T. i5 l
# service nova-network restart- p, Y0 I8 a" H& P
% ^4 S v' j3 g) r$ f* W! g8 o
创建自己的虚拟网络。: X( u: ?6 G6 X5 o) w$ g e0 l
# nova network-create vmnet --bridge-interface=virbr0- @' a( N, J. R/ l5 v3 {) \# \
4.4 启动一个镜像9 [5 K3 U' C( Q7 Q/ B) J5 v
0 ~3 G6 O8 D; G, j: ~
生成密钥
2 A& s$ k* s' ~/ I1 B5 p$ ssh-keygen& B4 }: i3 F# g4 z* J( H
$ cd .ssh/ V- Q0 b& Q0 O6 [# l/ i/ D5 G
$ nova keypair-add --pub_key id_rsa.pub mykey
; h5 ^$ A% @% Y0 n D如果你需要自己的镜像实例能被ping通和ssh,需要放开如下权限2 P# y2 B p7 t' G
# nova secgroup-add-rule defaulttcp 22 22 0.0.0.0/0& H0 b! \, T2 k( [) |" [3 t) i
# nova secgroup-add-rule defaulticmp -1 -1 0.0.0.0/0
- T# M6 F& A/ a+ n. ^, O2 h+ i, ~4 p- `( ~0 s3 M2 `$ `. B; W
启动实例
* Y- F3 |+ }& n& l' c4 n$ nova boot --flavor <flavor-id> --key_name mykey --image <image-id> --security_group default Ubuntu! j \0 Y. u2 H) O: f8 D
以下是我的例子。. `! C' K8 ~5 ]
# nova flavor-list
" G* J! f8 ~* L: c; z& w2 E+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
) B; f2 U; V! }9 t8 h' j1 Z| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
. \6 M( Q- O5 Q3 x: Z+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
" }$ q4 e0 \! u. |' b| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
H' t% _. g @$ l1 O% a4 h| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |* r0 S2 v7 K0 O1 N
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
9 n; o" m) g3 Z1 d| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |0 |* `1 k$ F( G! A# \( l
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
) E7 e, E4 p2 v5 \! p; u+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+3 o* e1 w; `, K. x2 i9 n: N
5 q H# L: x( U5 s" g
# nova image-list7 X3 I7 N4 B4 D. w9 I
+--------------------------------------+-------------------------+--------+--------+
- G; u& `1 h3 x| ID | Name | Status | Server |
& d0 w! m* O+ v, w7 e5 U3 D+--------------------------------------+-------------------------+--------+--------+$ `( d5 O1 c5 l
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE | |) x& Y" j- J4 w6 U' `
+--------------------------------------+-------------------------+--------+--------+
4 W) M# f% e2 a9 |$ T% o$ ^7 t1 c' C6 C: Y* ?
# nova list
9 A! q3 j5 X) f" q+--------------------------------------+--------+--------+------------+-------------+---------------------+
1 p* o; P9 s; F+ r5 M" T| ID | Name | Status | Task State | Power State | Networks |
# N7 W$ _1 {2 P. T4 o; z: e1 y! f2 \+ W+--------------------------------------+--------+--------+------------+-------------+---------------------+) a' j6 k, a" H7 X# B
| eff82154-bd75-40a7-bc83-60ba0f5b2ac4 | ubuntu | ACTIVE | None | Running | vmnet=192.168.122.2 |; A) Z- k0 B' j
+--------------------------------------+--------+--------+------------+-------------+---------------------+5 Y) H! n9 I) z4 q
$ D% p0 S ~% I7 u8 W2 D5. 增加用户面板
+ W4 W* C5 t8 }0 R# ]: i- L+ @) B% _- K& ~. \0 n3 O0 ~' i
这个非常简单,安装完以后就可以访问了。
) m: w4 O0 B- j% W1 I& }4 Q# apt-get install memcached libapache2-mod-wsgi openstack-dashboard
9 j. [. t6 F# G5 Z! D9 E1 L/ h! s接着访问http://<your-host-id>/horizon,是不是很简单。开始你的openstack之旅吧。8 w. P- e. @# b
| 9 Z! q+ Y# k+ ? B9 J
+ D1 A; c" a; U$ H5 C6 Q
" m+ E3 ~8 T" r$ u! Q. {0 s( v6 m6 P$ H
4 j: T) `) l$ _( r+ ]6 a, Z7 s
I( j1 ]4 d$ j4 z* `' t% a |
: S4 `+ h" y- ~( O# f( E5 E: r( f* M& c( @- u; s3 w4 e
| 5 k- t( D0 Q+ d+ ^. y( ]$ F
|
|