基于 VNFD 模板的自动 OpenStack 资源创建

https://blueprints.launchpad.net/tacker/+spec/automatic-resource-creation

VNF 厂商的需求之一是创建自定义的 OpenStack 资源,例如 flavor/网络/镜像。本蓝图建议在 Tacker 中 onboarding VNFD/创建 VNF 时,增加对自动资源创建的支持。

问题描述

在 Tacker 的当前版本中,电信运营商必须在创建 VNF 之前创建 OpenStack 资源。VNF 厂商无法在 VNFD 中添加 VDU 的详细信息。例如,VNF 厂商无法指定

1) VDU 的 VM 细节,如 cpu、内存和磁盘等;2) VDU 的网络细节,如 cidr、network_type 等;3) Glance 中不存在的镜像细节。

提议的变更

在 VNFD 模板中引入新的 host 属性将为提供 Tacker 的解决方案提供初步的指针。本规范将解决 flavor、网络和镜像的自动创建。

自动 Flavor 创建

模板变更

topology_template:
   node_templates:
       my_server:
           type: tosca.nodes.Compute
            capabilities:
               host:
                   properties:
                       num_cpus: 2
                       disk_size: 10 GB
                       mem_size: 512 MB

当用户提供 host 属性时,Tacker 将通过将这些细节添加到 heat 模板来创建一个新的 flavor。Tacker 将处理至少三个 host 属性,如 ‘disk_size’、‘num_cpus’ 和 ‘mem_size’。有关其他属性的参考,请参阅 [1]

Tacker 将从 TOSCA 模板中获取属性,并将其添加到 HOT 中,如下所示

heat_template_version: 2015-04-30
 resources:
     my_server_flavor_<UUID>:
         type: OS::Nova::Flavor
          properties:
             disk: 10
             ram: 512
             vcpus: 2

由于 ‘vcpus’ 和 ‘ram’ 是 HOT 中的必需参数,因此如果模板中没有这些细节,Tacker 将提供默认值(vcpus=1 和 ram=512)。

自动镜像创建

模板变更

vdu1:
  artifacts:
   vm_image:
      type: tosca.artifacts.Deployment.Image.VM
      file: http://URL/vRouterVNF.qcow2

在修改后的模板中,用户可以在 file 类型中指定 VM 镜像的 URL 或 glance 镜像名称。如果 file 参数中指定了 URL,Tacker 将创建镜像。

在这种情况下,我们可以有三种选项来自动创建和上传镜像

1). 在模板中指定镜像 URI,不进行参数化

如果我们选择此选项,就无法参数化 vm_image。Tacker 会在 onboarding VNFD 时使用 glance 客户端上传镜像。这是一个单步过程。使用此选项,我们需要根据镜像创建维护 VNFD 的状态。

2). 在 CSAR Zip 中提供镜像。

使用此选项,我们需要将所需的镜像与 VNFD 一起打包。因此,Tacker 将在 onboarding 时上传镜像。使用此选项,我们需要根据镜像创建维护 VNFD 的状态。

3). 提供参数化并在 VNF 创建时上传镜像。

在这里,我们可以参数化 vm_image 属性。使用此选项,Tacker 将在 VNF 部署时使用 HOT 模板将镜像上传到 glance。

让我们举例说明如何将 TOSCA 镜像 artifact 转换为 HOT 镜像资源。

TOSCA

artifacts:
  vm_image:
    type: tosca.artifacts.Deployment.Image.VM.qcow2
    file: http://filer/vnfimages/vrouter.qcow2

Heat

image:
  type: OS::Glance::Image
   properties:
    container_format: bare
    disk_format: qcow2
    location: http://filer/vnfimages/vrouter.qcow2

我们可以使用此选项删除 VNFD 的状态性。

在本规范中,我们更喜欢第三种选项。

自动网络创建

模板变更

internal_datapath:
    type: tosca.nodes.nfv.VL.ELAN
    network_name: net_internal_dp
    ip_version: 4
    cidr: '192.168.0.0/24'
    start_ip: '192.168.0.50'
    end_ip: '192.168.0.200'
    gateway_ip: '192.168.0.1'

在此修改后的模板中,用户可以指定他们想要部署 VNF 的网络的 CIDR。如果用户指定了 CIDR 而没有指定 network_id,Tacker 将自动创建网络和相应的子网。有关 tacker 将在 network_interfaces 中支持的属性,请参阅 [2]。对于网络,Tacker 将在 VNF 创建时使用 heat 代码创建网络资源。因此,我们不会将网络细节存储为网络资源与 heat stack 细节相关联。

让我们看看如何将上述 TOSCA 模板转换为 HOT 网络资源。

net_internal_dp:
        type: OS::Neutron::Net
        properties:
          name: net_internal_dp

net_internal_dp_subnet:
        type: OS::Neutron::Subnet
        properties:
          network_id: { get_resource: private_net }
          cidr: 192.168.0.0/24
          gateway_ip: 192.168.0.1
          allocation_pools: [{"end": "192.168.0.200", "start": "192.168.0.50"}]

数据模型影响

Flavor、网络和镜像将在部署 VNF 时创建,并在删除 VNF 时由 heat 自动删除。因此,数据模型不会发生任何变化。

REST API 影响

其他最终用户影响

用户可以在本规范之后使用 TOSCA 模板,以及 Tacker 定义的模板。

注意:自动镜像上传不适用于将被多次实例化的 VNFs。它将导致相同的 glance 镜像被多次上传。

实现

负责人

主要负责人

  • Bharath Thiruveedula (bharath-ves)

其他贡献者

工作项

  • 修改 VNF 创建的调用,以便 VNF 操作由插件处理。

依赖项

测试

本蓝图为每个交付成果提供单元测试用例。

文档影响

devref 将通过提供有关如何适应新的模板变更的说明进行修改。

参考资料