LibCloud后端

这是一个_实验性_的配置后端,最终旨在支持多个libcloud驱动程序。目前仅支持OpenStack驱动程序。

先决条件

  • 拥有一个支持Nova和Cinder的OpenStack提供商账户

  • 支持RFC 2136的DNS服务器。我们使用bind这个ansible角色来帮助配置我们的。

  • 配置为更新DNS记录的nsupdate-web实例。我们为此也使用了一个ansible角色

  • teuthology.yaml中为此后端本身(参见配置)和nsupdate-web进行配置

  • 您还需要选择同时运行的最大节点数,并在您的paddles数据库中为每个节点创建记录 - 确保将每个节点的is_vm设置为True

配置

使用OVH作为OpenStack提供商的示例配置

libcloud:
  providers:
    ovh:  # This string is the 'machine type' value you will use when locking these nodes
      driver: openstack
      driver_args:  # driver args are passed directly to the libcloud driver
        username: 'my_ovh_username'
        password: 'my_ovh_password'
        ex_force_auth_url: 'https://auth.cloud.ovh.net/v2.0/tokens'
        ex_force_auth_version: '2.0_password'
        ex_tenant_name: 'my_tenant_name'
        ex_force_service_region: 'my_region'

为什么选择nsupdate-web?

虽然我们可以支持直接调用nsupdate,但我们选择不这样做。原因有以下几点

  • 避免在teuthology上增加另一个本可以留给独立服务的功能

  • 避免teuthology用户必须请求、获取和保护nsupdate运行所需的私钥

  • 因为我们为Sepia的所有测试节点使用一个子域,所以我们不得不为整个区域启用动态DNS(这是bind的一个限制)。然而,我们不希望用户能够推送整个区域的DNS更新。相反,我们赋予了nsupdate-web根据主机名是否匹配可配置的正则表达式来接受或拒绝请求的能力。私钥本身不与非管理员用户共享。

Bugs

目前,仅测试了OVH作为提供商。欢迎PR支持更多提供商!