OpenStack之镜像管理

在基于OpenStack的企业私有云环境建设当中,系统镜像起到了非常重要的作用。同时对于使用者而言,我们通常需要各种不同类型的操作系统角色,比如AppServer, DBServer,假如我们重头构建所有的镜像,对于使用者而言是非常浪费时间的。
同时当镜像的数量达到一定程度之后,其本身的管理也是非常复杂的,这里我们来探讨一下如果通过一些技术实践来加快我们的系统镜像构建,以及大量镜像的管理方式。

镜像管理

关于大量镜像管理我个人的想法就是:“不要对镜像管理”;

“不要对镜像管理”的意思不是说不管,这里我们来说说加入我们对镜像进行管理所带来的一些基本问题:

  • 镜像的命名,分类

对于大部分使用者而言我们往往想的是,我只需要根据一个镜像启动一台主机,我的所有环境就OK了。 这是一个非常理想的情况,但是假如我们的环境组合涉及到操作系统,应用程序版本,应用补丁之后。本身关于镜像命名就已经是非常复杂的事情,这时候我们常常会看到的情况就是有一大堆名字如同“ubuntu-12.04-server-x86-64-project-v0.0.1-p0.0.2-mysql-5.5”。 我们当然希望使用者能够通过名字去找到他们所有需要的镜像,但是这么长的名字,难道不恶心吗?

  • 被浪费的存储空间

对于一个系统镜像而言其体积本身就不小,那假如我们的镜像有成百上千个的时候怎么办? 只是镜像的存储就会浪费掉大量的物理资源。

“不对镜像进行管理”的意思就是我们只需要对镜像的构建过程(自动化脚本+Packer模板)进行管理,当我们已经有了完善的自动化流程,对于构建一个特定镜像而言我们要做的事情实际上要做的事情就是去组合我们的自动化脚本,并且结合诸如Packer这样的工具去完成我们的镜像构建。

那么这个时候我们要管理的镜像实际上就是去管理我们的自动化脚本以及Packer模板。

构建镜像Pipline

未完待续