基于 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 将通过提供有关如何适应新的模板变更的说明进行修改。