跳转到: 导航, 搜索

XenServer文件注入

  • Launchpad条目: NovaSpec:xs-fileinject
  • 创建:
  • 贡献者: Ed Leafe, Chris Behrens

总结

当前的Rackspace Cloud Servers系统通过将文件写入客户机与实例进行通信。我们称之为“将文件注入客户机”。这些文件用于配置和其他系统级控制。

发布说明

客户机文件注入(从nova写入客户机实例的配置)现在已支持。它用于管理配置文件和其他系统级设置。它与客户机代理程序协同工作;实例所有者可以选择禁用代理程序的任何或所有功能。

原理

与当前Rackspace Cloud Servers系统功能对等。为了提供托管云服务器,这是必需的能力。

用户故事

作为服务提供商,我希望能够写入客户机实例,以便我可以正确管理它们。

作为拥有客户机实例的客户,我希望我的服务提供商能够帮助我进行配置更改。

前提条件

  1. XenServer 是虚拟机监控程序
  2. 客户机代理 在客户机实例上可用

设计

当前的Rackspace Cloud Servers实现将作为模型,因为它运行良好。我们将继续使用xenstore作为计算模块和客户机代理之间的通信链路,并且值将继续使用base-64编码。

从当前设计中提出的一个更改是保持文件路径和文件内容作为单独的值。目前,它们用逗号分隔符连接起来,然后对连接后的字符串进行编码;新设计将分别编码它们并将它们作为单独的值传递。这将大大简化代理程序解析写入xenstore的编码值的工作。

实现

我们已经具备nova读取/写入特定实例的xenstore的能力。此蓝图需要添加传入文件和路径,并将其写入xenstore,以便客户机代理可以读取的能力。

由于文件甚至路径可能包含非ASCII字符,因此我们必须确保这些字符在nova堆栈中保持不变。当前实现使用base64编码来实现这一点,因此我们必须确保在nova堆栈的每个步骤中,这些值在传递给下一个接收者之前都经过正确编码。

UI 变更

无。

代码变更

主要的更改将在plugins/xenserver/xenapi/etc/xapi.d/plugins/agent脚本中进行,该脚本将处理请求的接收、将请求写入xenstore以及返回代理程序的响应。

堆栈中也会进行更改,包括api层和计算层,以处理文件注入请求,并正确地将它们传递给处理这些请求的特定处理程序,即nova/virt/xenapi/vmops.py

迁移

不需要

测试/演示计划

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

BoF 议程和讨论

尚未有