扩展OpenStack的nova metadata api
1. 场景 云计算环境中,当虚拟机启动时难免需要做一些初始化配置,这必然涉及到虚拟机如何获取数据,谁又提供这些数据的问题。当然,这里不得不提AWS,他们想到在虚拟机内使用一个固定的IP( http://169.254.169.254 )来获取一些相关数据(metadata:元数据),进而完成一些配置工作。而OpenStack继承了这种设计。自然,这里还有一些很不错的工具,例如: cloudinit ( http://cloudinit.readthedocs.org/en/latest/ )。它被安装在制作好的镜像中,当镜像派生出实例虚拟机时,在虚拟机内的 cloudinit与 元数据服务配合完成初始化工作。 cloudinit 功能很强大,可以分加载层次(可以在boot层次上加载,也可以在操作系统之上加载),还可以分频率(只运行一次,每天......)运行等等,当然在这里它是题外话。 目前cloudinit在windows系的镜像中是不支持的,也许你不需要一个这么大而全的工具的时候,你只想在虚拟机系统启动时通过读取自己的metadata api完成一些小设置,那么这里会告诉你一个基本的例子。 2. 目录结构 假设你已经有一套部署好的OpenStack,这里以单节点OpenStack为例。 你可以通过以下命令,查找到nova api源码所在的目录(当然,这里你也可以直接下源码查看)