近两天一直想利用PC机上的虚机创建一套devstack环境,便于研究openstack。devstack的安装与使用方法不在这里啰嗦了,只讲一下遇到的问题。
devstack的配置文件一点都不简单!
mitaka版的devstack环境,创建cirros云主机遇到键盘输入错误是高概率事件!
1、首先是,devstack完全按官网指南安装是真简单,但也真鸡肋,首先是local.conf文件中除了几个管理用的密码参数外,什么也不定义。然后又是默认访问国外源进行安装,慢得不靠谱啊。所以很容易出错。我这里只是给大家贴一个反复验证过的配置文件,过多不谈。
local.conf
[[local|localrc]]
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
# CredentialsDATABASE_PASSWORD=pass
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass
HOST_IP=192.168.136.133
SERVICE_HOST=192.168.136.133
MYSQL_HOST=192.168.136.133
RABBIT_HOST=192.168.136.133
GLANCE_HOSTPORT=192.168.136.133:9292
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron
# only support IP v4
SERVICE_IP_VERSION=4
## Neutron optionsQ_USE_SECGROUP=True
FLOATING_RANGE="192.168.136.0/24"
FIXED_RANGE="10.0.1.0/24"
NETWORK_GATEWAY="10.0.1.254"
Q_FLOATING_ALLOCATION_POOL=start=192.168.136.200,end=192.168.136.250
PUBLIC_NETWORK_GATEWAY="192.168.136.2"
Q_L3_ENABLED=True
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
# VLAN configuration.Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
以上配置我在ubuntu14.04LTS上反复验证过,可以成功安装mitaka版。
2、mitaka版的devstack环境,创建cirros云主机遇到键盘输入错误
错误代码为:
atkbd serio0: Use 'setkeycodes 00 <keycode>' to make it known.
atkbd serio0: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0).
更多错误信息见下图:
这个错误能有多无厘头呢?
我的键盘除了数字小键盘中的10个数字键外,其它键全部不能识别,按哪个都报上面的错误信息!!!
连登录都完成不了,还测试什么啊。
纠缠一天,回家跑上突然有了一个灵感
这个horizon虽然是个WEB管理界面,但所谓的云主机终端却仍然是嵌入的VNC客户端实现的。既然它WEB上的VNC报键盘输入错误,那我不使用这个原装的WEB平台还不行吗?直接来VNC Viewer吧!
先回到安装了devstack环境的主机上,查看下系统中的VNC监听端口:
我目前创建了2个云主机实例,分别监听的是5900和5901的VNC端口。可以看到的是5900端口的监听地址是全部系统IP地址,因为这是我修改过的了。
5901仍然还是默认的,仅监听127.0.0.1地址,也就是说你直接访问它是不行的。
这么修改它,进入KVM的命令行工具,改它的虚机配置:
找到vnc相关的配置段落,把这两段127.0.0.1的都重置为0.0.0.0
保存后退出。回到云平台的Dashboard中重启下这个云主机,再看它的VNC监听端口:
连上为所欲为啦
3、cirros云主机键盘输入解决方法二
所以说人就是不能休息,一休息就来灵感
虽然我一时无法去调dashboard源码解决这个bug,但其它办法还是很多。
下面讲个一篮子解决方案。
openstack上创建的云主机都是通过nova-compute进程管理的,想起手动参照openstack官网部署全套openstack时还要专门为nova设置vnc这个参数呢。
所以,回到devstack的管理窗口。怎么使用screen管理devstack请自行参照这篇文章:Devstack Screen使用技巧
定位到n-cpu,即nova-compute服务。按crtl+c,停止nova-compute服务。按一下向上的方向键可以看到启动nova-compute的命令及参数,从中可以看到配置文件的位置是/etc/nova/nova.conf。另外开个窗口,去修改这个文件。
vi /etc/nova/nova.conf
请把上图中的两个127.0.0.1直接修改为0.0.0.0即可。
保存后退出。回到刚才停nova-compute的窗口,使用上上图所示的命令启动nova-compute服务。
去dashboard的界面上重新创建个云主机试试看吧!