如何向NodePool导入镜像文件 |
您所在的位置:网站首页 › 镜像文件如何载入 › 如何向NodePool导入镜像文件 |
然而,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 |