如何向NodePool导入镜像文件

您所在的位置:网站首页 镜像文件如何载入 如何向NodePool导入镜像文件

如何向NodePool导入镜像文件

#如何向NodePool导入镜像文件| 来源: 网络整理| 查看: 265

然而,nodepool使用中,必须使用disk-image-create创建出镜像文件。在一些特殊环境下,创建镜像文件并不是轻松的工作:

● 离线环境

● 网络不稳定

● 高度定制镜像文件

● 初学者,不了解disk-image-create脚本

● 环境迁移

那么,有没有办法规避这个问题呢?本文提供一个思路,以及实践效果,供读者参考。

首先,我们的思路是:通过导入已经制作成功的镜像文件,替代使用disk-image-create生成镜像文件。

因为disk-image-create生成镜像文件,需要从互联网下载很多的内容。在网络不给力的情况下,这个过程十分痛苦。而离线环境就是不可能完成这个工作。此外,笔者在docker环境中尝试使用disk-image-create也有失败,原因是disk-image-create需要使用loop设备制作镜像,默认情况下docker没有开放loop设备。

在环境迁移的场景下,重新制作DIB镜像也是低效工作。如果能够复制一份DIB镜像,这个过程会节省50%以上的时间。对于初学者来说,导入一份已经验证过的镜像文件,远比生成DIB镜像简单。

所以,导入DIB镜像这个思路是一种可行的手段。

接下来就是如何实现镜像文件的导入。Nodepool的命令中没有导入DIB镜像的功能,所以只能另辟蹊径。

分析了nodepool的结构,我们可以发现,nodepool有一个服务nodepool service,一个mysql数据库nodepool,以及nodepool的配置文件nodepool.yaml。

生成的DIB镜像信息保存在数据库中,表为dib_image:

查看nodepool.yaml,可以看到nodepool的dib文件存放路径:

images-dir: /opt/nodepool_dib

因为nodepool没有其他的保存数据的位置,所以我们猜想,dib的信息就是保存在数据库中。那么按照nodepool的数据库格式构造一条记录:

构造好记录后,就需要测试这个镜像是否可用。在nodepool里按照image_name编写该镜像的使用信息(注意那个蓝色的commonci,对应image_name):

最后是测试验证环节。使用nodepool image-upload commonci,可以看到镜像文件上传到OpenStack环境,并且能够启动一个虚拟机。至此,试验成功。

后记。Nodepool没有提供导入镜像文件的功能,不知道是遗漏还是别的原因。通过阅读nodepool的代码,我们可以调用nodedb.py的功能,更简单的实现导入镜像文件的功能。由于nodepool是openstack正式项目,我们已经提交了BP,准备正式实现导入镜像功能,并提交给社区。

作者简介:孔炜,软件开发工程师,十六年经验,熟悉应用软件开发,喜欢了解和学习对各种开发工具和开发语言,对OpenStack CI有一定研究。返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3