metadata

metadata基本概念

在创建虚拟机的时候,用户往往需要对虚拟机进行一些配置,比如:开启一些服务、安装某些包、添加 SSH 秘钥、配置 hostname 等等。

在 OpenStack 中,这些配置信息被分成两类:metadata 和 user data。

  • Metadata 主要包括虚拟机自身的一些常用属性,如 hostname、网络配置信息、SSH 登陆秘钥等,主要的形式为键值对。而 user data 主要包括一些命令、脚本等。

  • User data 通过文件传递,并支持多种文件格式,包括 gzip 压缩文件、shell 脚本、cloud-init 配置文件等。虽然 metadata 和 user data 并不相同,但是 OpenStack 向虚拟机提供这两种信息的机制是一致的,只是虚拟机在获取到信息后,对两者的处理方式不同罢了。所以下文统一用 matadata 来描述。

在 OpenStack 中,虚拟机获取 Metadata 信息的方式有两种:
Config drive 和 metadata RESTful 服务。此文只关注解析metadata RESTful 方式

Metadata RESTful 工作原理

metadata

meta作用

可以使用metadata技术实现用户个性的配置

总结

Metadata 服务为用户自定义配置虚拟机提供了有效的解决方案。本文剖析了 OpenStack 提供 metadata 服务的RESTful机制。那么Config drive 和RESTful机制差别在哪?

  • Config drive 机制主要用于配置虚拟机的网络信息,包括 IP、子网掩码、网关等。当虚拟机无法通过 DHCP 正确获取网络信息时,config drive 是获取 metadata 信息的必要方式。
  • 如果虚拟机能够自动正确配置网络,那么可以通过 RESTful 服务的方式获取 metadata 信息。