跳转到: 导航, 搜索

Nova软件包配置

  • Launchpad条目: FIXME
  • 创建时间: 2012年1月27日
  • 贡献者: Andrew Bogott, Ryan Lane

总结

通过Nova API支持基于实例的软件包配置。一个“软件包”可能是一个Puppet类,一个Chef配方,一个apt软件包等。

发布说明

管理员将能够通知Nova可用的软件包列表以及相关的变量。

管理员将能够设置要安装的默认软件包集(可以是云范围内的,也可以是针对特定项目的)。

用户将能够为给定的实例包含和配置选定的软件包集。

原理

目前,在Nova上提供新的系统配置需要创建一个自定义镜像。添加软件包配置将允许对实例配置进行更细粒度的控制。

用户故事

前提条件

- 此设计假定系统配置可以通过两种数据类型来描述,即“软件包”和“变量”。在实现中,“软件包”实际上可能代表一个脚本或配方,但它应该对应于单个系统配置单元。

- 此设计中讨论的所有镜像都假定已经包含处理软件包配置提供的数据或文件的必要工具。

- 同样,配置的处理以及Nova和实例之间配置的通信将由一个驱动程序管理,其内部细节在此不做讨论。

- 假定软件包是跨平台的,因此无论客户机操作系统如何,安装给定的软件包都会执行有意义的操作。软件包的实现可能因操作系统而异。

设计

Nova配置将提供以下选项

  • package_management_driver

管理员将通知Nova任意命名的软件包和变量的存在。这组软件包和变量构成全局软件包菜单。全局菜单中的类可以默认启用,变量可以赋予默认值。

对于给定的项目,全局软件包菜单中的每个软件包将具有三种状态之一:不可用、可用或默认。所有类都以“不可用”状态开始,但可以通过API调用更改状态。“默认”状态意味着这些软件包将在项目中的所有实例上安装。变量的处理方式类似,但如果它们设置为“默认”状态,它们也将接受默认值。项目中的可用或默认类和变量构成项目软件包菜单。

在启动或运行时,实例的用户可以操作项目软件包菜单中的类和变量。“可用”类可以启用或禁用。“默认”类默认启用,但可以禁用。用户还可以根据需要配置项目菜单中的软件包变量。

当创建实例或更改实例的软件包设置时,将调用软件包管理驱动程序,并提供新的软件包和变量集。此更新的列表将传递给客户机实例,仿佛是魔法一般。

实现

将在Nova数据库中添加三个新表:package_entries、package_project_states 和 package_instance_states。每个类或变量将在package_entries中有一条记录(可能包含其他信息,例如数据类型或默认值)。然后,对于每个项目,可以通过将类或变量添加到package_project_states来使其可用,将类或变量与项目或实例关联并指定安装状态和默认值。 同样,如果实例中类或变量的状态与package_project_states中指定的状态不同,它将在package_instance_states中具有相应的条目。

将通过package_management_driver处理将软件包信息传递给实例。例如,在安装中使用puppet时,驱动程序可以将选定的软件包放入与实例共享的LDAP数据库中,或者它可以生成与实例共享的卷上的sites.pp文件。

驱动程序将为Nova提供一个非常简单的接口,例如

configure_packages(instance_id, dictionary_of_classes_and_variables)

UI 变更

“nova”和/或“nova-manage”命令行工具将扩展为提供软件包配置选项。最有可能的是,此接口将包括基于文件的选项,因为配置会很冗长。例如

$ nova package-add <instance-id> apache2

或者

$ nova package-config <instance-id> --file <包含软件包和变量列表的文件>

理想情况下,Horizon也将提供一个配置工具,尽管这很可能留待以后实现。

代码变更

迁移

测试/演示计划

未解决的问题

BoF 议程和讨论