基于镜像属性的配置驱动¶
https://blueprints.launchpad.net/nova/+spec/config-drive-image-property
在创建实例时,检查镜像属性以决定是否应创建配置驱动。
问题描述¶
目前 Nova 决定是否为服务器创建配置驱动,基于
用户在服务器创建 API 请求中指定 config-drive 选项,或者,
服务器被调度到设置了 force_config_drive 选项的计算节点。
但我们也需要考虑镜像的要求。有些镜像可能明确要求配置驱动。
提议的变更¶
添加一个镜像属性作为 “img_config_drive”,img_config_drive 的值可以是
img_config_drive=mandatory|optional
这些含义是
mandatory == 实例必须始终拥有一个配置驱动
optional == 实例可以使用配置驱动,但即使缺少它也可以正常工作
任何其他值都将被视为错误。如果没有指定选项,默认值为 optional。
未来,此属性可能扩展为包含更多选项,例如 ‘disable’ 以禁用 config_drive。 届时应提供一种机制,以确保 ‘disable’ 选项不会被视为错误。
配置驱动决策规则如以下表格所示。只要用户在 API 中指定、镜像属性中要求或计算节点配置选项指定,就会创建配置驱动。
API
镜像属性
计算节点配置
结果
否
Mandatory
已设置或未设置
是
否
可选
已设置
是
否
可选
未设置
否
已指定
Mandatory 或 Optional
已设置或未设置
是
备选方案¶
另一种选择是将 API 选项和镜像属性组合成 API 层中的一个实例属性,但恕我直言,这不够清晰。
数据模型影响¶
否
REST API 影响¶
否
安全影响¶
否
通知影响¶
否
其他最终用户影响¶
此 BP 将添加一个额外的镜像属性,因此用户应该意识到这一点。
性能影响¶
不会有性能影响。
其他部署者影响¶
建议部署者在将 config drive 属性添加到任何镜像之前更新所有计算节点。否则,没有此功能的计算节点将不会检查镜像属性。
开发人员影响¶
否
实现¶
负责人¶
- 主要负责人
yunhong-jiang
工作项¶
更改 virt/configdrive.py 以同时检查镜像属性。
依赖项¶
关于镜像属性增强的一些讨论见 https://blueprints.launchpad.net/nova/+spec/convert-image-meta-into-nova-object 并且讨论仍在进行中。
此提案与该提案不冲突,我们只需要确保新的 config drive 属性将在 VirtProperties 中定义。无论哪个提案先落地,这将是一项小的努力。
测试¶
将添加 Tempest 测试,以确保镜像 config drive 属性得到正确处理。
文档影响¶
需要为新的镜像属性更新文档。
参考资料¶
否