支持 ansible driver 的多工件¶
https://blueprints.launchpad.net/tacker/+spec/add-ansible-mgmt-driver-sample
我们将能够使用多部署模式的配置。
问题描述¶
Ansible Driver 仅对 VDU 有一个配置信息。此配置信息在 implementation 键中定义。
注意
implementation 键在 TOSCA Simple Profile 3.6.14 中定义 [1]。
此参数不能有多个值,它只有一个值。它在每个 VNF 生命周期开始和结束时根据此定义执行。
node_templates:
VNF:
type: SAMPLE.VNF
properties:
flavour_description: 'n-vnf'
vnfm_info:
- Tacker
interfaces:
Vnflcm:
instantiate: []
instantiate_start: []
instantiate_end:
implementation: ansible_driver
...
artifacts:
ansible_driver:
description: Management driver plugin
type: tosca.artifacts.Implementation.Python
file: /opt/stack/tacker/tacker/vnfm/mgmt_drivers/ansible/ansible.py
如果我们希望为不同部署 flavor 的 VNFD 提供不同的配置,我们需要在 Driver 中实现条件分支,或者提供另一个 Driver。然而,这些方法会增加 Driver 的特异性。
我们思考了确保 Driver 的通用性的方法,并提出了以下更改。
提议的变更¶
建议的更改是实现 TOSCA 定义的 primary 和 dependencies 键。
primary 可以定义主脚本。
dependencies 可以定义由主脚本引用的辅助脚本。
如果您实现了此依赖关系,您可以这样定义它
node_templates:
VNF:
type: SAMPLE.VNF
properties:
flavour_description: 'n-vnf'
vnfm_info:
- Tacker
interfaces:
Vnflcm:
instantiate: []
instantiate_start:
implementation:
primary: ansible_driver
dependencies:
- mgmt-drivers-ansible-config-start
instantiate_end:
implementation:
primary: ansible_driver
dependencies:
- mgmt-drivers-ansible-config-end
...
artifacts:
ansible_driver:
description: Management driver plugin
type: tosca.artifacts.Implementation.Python
file: /opt/stack/tacker/tacker/vnfm/mgmt_drivers/ansible/ansible.py
mgmt-drivers-ansible-config-start:
description: Management driver config_start.yaml
type: tosca.artifacts.Implementation.Yaml
file: ../ScriptAnsible/config_start.yaml
mgmt-drivers-ansible-config-end:
description: Management driver config_end.yaml
type: tosca.artifacts.Implementation.Yaml
file: ../ScriptAnsible/config_end.yaml
primary 定义具有运行管理能力的脚本,而 dependencies 定义执行实际注入的脚本。这些定义允许用户进行灵活的配置。
注意
此规范还保持对 VNFD 当前使用的单个工件格式的向后兼容性支持。
如何使用¶
Ansible Driver 使用 yaml 文件。但是,yaml 定义未在 OASIS 中定义,因此无法按原样由引用 OASIS 定义文件的 Tacker 使用。为了使用 yaml 文件,我们创建以下定义文件。
示例:additional_type.yaml
tosca_definitions_version: tosca_simple_yaml_1_2
description: yaml types definitions version 0.0.1
metadata:
template_name: additional_type
template_author: ---
template_version: 0.0.1
artifact_types:
tosca.artifacts.Implementation.Yaml:
derived_from: tosca.artifacts.Implementation
description: artifacts for Yaml
mime_type: application/x-yaml
file_ext: [yaml]
创建此文件后,我们将此文件放在 VNF Package 的 Definitions 文件夹中。
示例
VNF Package
|
+--TOSCA-Metadata
| +--TOSCA.meta
|
+--Definitions
| +--etsi_nfv_sol001_common_types.yaml
| +--etsi_nfv_sol001_vnfd_types.yaml
| +--helloworld3_df_simple.yaml
| +--helloworld3_top.vnfd.yaml
| +--helloworld3_types.yaml
| +--additional_type.yaml <<< add file
|
+--Files
| +--images
| +--cirros-0.5.2-x86_64-disk.img
|
+--Drivers
| +--vnflcm_noop.py
|
+--UserData
+--__init__.py
+--lcm_user_data.py
VNFD 在 imports 部分导入此定义文件。
此外,VNFD 不能仅仅通过存储来读取此定义文件。为了能够读取此定义文件,我们将以下配置添加到 VNFD。
tosca_definitions_version: tosca_simple_yaml_1_2
description: Simple deployment flavour for Sample VNF
imports:
- etsi_nfv_sol001_common_types.yaml
- etsi_nfv_sol001_vnfd_types.yaml
- helloworld3_types.yaml
- additional_type.yaml <<< import file
在以下设置之后,您可以执行 VNF LCM。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Wataru Juso <w-juso@nec.com>
- 其他贡献者
Aldinson C. Esto <esto.aln@nec.com>
Pooja Singla <pooja.singla@india.nec.com>
工作项¶
在 tosca-parser 中启用对 primary 和 dependencies 的理解
在 tacker 的 schema 中启用对 primary 和 dependencies 的理解
扩展获取 implementation 信息的方法
依赖项¶
无
测试¶
无
文档影响¶
修改 Ansible Driver 的用户文档