0%

Shellinabox简介

Openstack的Ironic组件中有一个部分提供了shellinabox来调用ipmitool以实现访问机器的console的功能

通常情况下,我们在访问任何远程服务器时,会使用常见的通信工具如OpenSSH和Putty等。但是,有可能我们在防火墙后面不能使用这些工具访问远程系统,或者防火墙只允许HTTPS流量才能通过。不用担心!即使你在这样的防火墙后面,我们依然有办法来访问你的远程系统。而且,你不需要安装任何类似于OpenSSH或Putty的通讯工具。你只需要有一个支持JavaScript和CSS的现代浏览器,并且你不用安装任何插件或第三方应用软件。

这个shellinabox,发音是Shell In A Box,是由Markus Gutschke开发的一款自由开源的基于Web的Ajax的终端模拟器。它使用AJAX技术,通过Web浏览器提供了类似原生的 Shell 的外观和感受。

阅读全文 »

内存动态管理

内存的动态管理为虚拟机的内存提供了一个更合理的使用方式。

这使得用户在创建虚拟机之后,可以在虚拟机运行的状态下动态地修改虚拟机内存,以达到需求目的。

本文介绍了如何为使用virtio驱动的kvm windows虚拟机来完成内存的动态管理。

阅读全文 »

nova.api.openstack.compute.servers.py中的create函数写道虚拟机的adminPass来自一个名为password的变量。这个变量又是通过_get_server_admin_password函数产生的:

create函数:

1
password = self._get_server_admin_password(server_dict)

_get_server_admin_password函数:

1
2
3
4
5
6
7
8
9
10
11
def _get_server_admin_password(self, server):
"""Determine the admin password for a server on creation."""
try:
password = server['adminPass']
self._validate_admin_password(password)
except KeyError:
password = utils.generate_password()
except ValueError:
raise exc.HTTPBadRequest(explanation=_("Invalid adminPass"))

return password

由此可见,_get_server_admin_password函数已经具备判断并选择自定义密码的能力,于是只要传入一个adminPassserver_dict里即可。

修改后的create函数:

1
2
3
4
5
6
7
meta_dict = body['server'].get('metadata', None)
if meta_dict:
if meta_dict.get('password', None):
server_dict['adminPass'] = meta_dict['password']

del server_dict['metadata']
password = self._get_server_admin_password(server_dict)

调用方法:

1
nova boot ******* --meta password=mypass *****

  八月,成都的气温在某天忽然热起来,起床后的鹿伯夔发现身上因出汗而发粘。过了正午,天色暗了些,大约是聚集了一些水气,却又不像要下雨的样子。

  鹿伯夔从冰箱里取出一罐可乐,盘腿坐在电扇的面前,对着呼吸的叶片翻起了可乐罐的拉环。电视里正在播放一则新闻,说的是若干名来自芝诺空间的时空稽查组成员,正在追捕一名从25世纪跳跃过来的穿梭者。电视画面的背景是春熙路,有四五个身穿银灰色铠甲,戴着眼镜蛇头头盔,手持权杖的人出现在画面的中间,大概就是所说的时空稽查组成员。

  他们正站在龙抄手的店门口。

  鹿伯夔想起来,应该有五个月没去那吃过了。他拿起手机翻看通讯录,希望能找一个合适的吃伴。

  正好在这个时候,他收到了一条短信。

  来信者的号码:[1, 86, 101, 110, 105, 99, 101, 32, 81, 117, 101, 101, 110].

  除了号码,再无别的信息。

  鹿伯夔小的时候曾经在老家的江边见过几寸长的白色蛇颈龙,此刻看着这串的号码,他下意识觉得这很亲切,至少不那么陌生。不过没有人相信鹿伯夔说的白色蛇颈龙,于是这个号码只能暂时存进了他的通讯录中。

阅读全文 »

Nova multi-show开发目的

什么是 nova multi-show ?即通过此命令可以获取多个虚拟机的信息。

那么 nova multi-show 和使用多次 nova show 有什么区别?

nova multi-show 用一次查询查出所给的所有虚拟机信息;即 nova multi-show 查询10个虚拟机和调用10次 nova show 查询的区别就是减小了对数据库的请求开销。如果同时有100个用户作出了查询功能,假设查询了10台,那么 nova multi-show 则减少了900次对数据库的请求操作。

阅读全文 »

前因

一台虚拟机的磁盘因存储的问题出现了异常,需要修复。而因为不知道虚拟机的密码,无法进入虚拟机内部查看具体问题。

阅读全文 »

Nova DB简介

nova.db在F、G、H版本的差异不大,但是从G版开始加入了conductor,不允许compute直接访问数据库,所以在compute的代码里调用数据库需要通过conductor。(PS:现在可以在计算节点配置conductor session的use_local选项来决定是否由compute服务直接访问数据库)

如果要增加一个新的功能,而且这个功能需要操作数据库,在操作数据库这个方面一般分为两个步骤:

一、db模块中的内容编写,主要包括数据表的创建、功能及api的编写;

二、compute模块中,对db提供的api调用方法的编写。

推荐优先学习sqlalchemy模块

openstack环境版本:H版(G版类似,F、E版的区别会有说明)

阅读全文 »