openstack 中 metadata 和 userdata 的配置和使用
Posted Eric_Xiett
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openstack 中 metadata 和 userdata 的配置和使用相关的知识,希望对你有一定的参考价值。
openstack 中 metadata 和 userdata 的配置和使用
什么是metadata和userdata?它们存在的意义何在?
使用云部署(launch)了虚拟机后,想定制化自己的虚拟机,比如配置 IP,设置硬盘分区等等,为了不需要每次部署虚拟机,都要做定制化的镜像,费时费力,这样metadata和userdata就出现了,提供向虚拟机注入信息的机制。
metadata 的介绍在ec2-instance-metadata
userdata 的介绍在userdata
metadata和userdata的区别和应用场景
metadata 是 key/value的方式,长度控制在 255 字符,重点在提供,比如 IP,安全组等;而 userdata 多是脚本的方式,重点在配置,比如提供shell脚本,设置root用的密码等等;
launch(boot)虚拟机时传入的参数不同,metadata 使用 –meta,key和value的长度控制在255个字符,而userdata使用–user-data,使用文件传入,dashboard上直接上内容;
userdata一旦虚拟机launched,虚拟机运行过程中无法进行修改,且仅适用在launch阶段,后续的重启都不会运行,而metadata在nova有独立的RESTful API 接口,可在虚拟机运行过程中动态修改;
metadata 在openstack中会放置在meta服务器上或者虚拟机内部,分光驱方式和修改镜像方式,后面讲到,需要虚拟机用户主动去获取,而userdata则是由cloudinit软件执行,在虚拟机launch时运行;
配置和使用
metadata 配置参照metadata, 而 userdata 无需特殊配置。
如果使用镜像服务器的话,还有可能配置 neutron-dhcp-agent 的配置文件
vi /etc/neutron/dhcp_agent.ini
enable_isolated_metadata = True
enable_metadata_network = True
贴一张网上截取的图,解释meta服务器的工作流程
使用:
boot 时,–meta/–user-data 传入
metadata 可由 nova meta/host-meta 修改
虚拟机内存放位置
metadata
需要介绍3中注入方式- 镜像修改方式,以 meta_data.json 文件存放在虚拟机/目录下。
- 光驱注入方式,以 meta_data.json 文件存放在光驱设备中,需要 mount /dev/sr0 /mnt; /mnt/openstack/latest/meta_data.json。
- meta服务器方式,nova-api 服务集成了此服务器,通过 RESTful API,直观点,nova meta/host-meta 均可以设置虚拟机的meta,存放在nova数据库的instance_metadata中,虚拟机使用 curl http://169.254.169.254 来获取。
userdata
2中注入方式- 镜像修改方式,以 user_data.json 文件存放在虚拟机/目录下。
- 光驱注入方式,以 user_data.json 文件存放在光驱设备中,需要 mount /dev/sr0 /mnt; /mnt/openstack/latest/user_data.json。
注:上述的 1 和 2 方式为 二选一 的关系
以上是关于openstack 中 metadata 和 userdata 的配置和使用的主要内容,如果未能解决你的问题,请参考以下文章
通过 dhcp-agent 访问 Metadata - 每天5分钟玩转 OpenStack(168)
通过 dhcp-agent 访问 Metadata - 每天5分钟玩转 OpenStack(168)