OpenStack的子项目Tacker是NFV管理器,用于监视、配置NFV和管理NFV全生命周期。基于通用性考虑,Tacker对VNF的监视、配置、管理都是基于插件方式来实现,集成不同的厂商VNF需要进行开发对应的插件来适配各个厂商,在Tacker中这插件称之为mgmt_driver。本文将详细讲解tacker整个集成的流程,并重点讲解mgmt_driver插件的开发方法。
如下图所示,其中PluginA和PluginB 就是Tacker与 VNFA和VNFB进行对接的插件,主要负责与VNF和EMS交互,完成实例化、扩所容、升级、终止等生命周期操作相关的业务协商和配置。
Tacker集成VNF的流程
集成分为五个步骤。
1.收集厂商VNF的基本信息和资源信息,信息包含image、CPU、memory、disk、网络构成等。
2.根据收集的VNF信息进行Template的设计。
Template根据TOSCA规范进行了一部分自定义。在tacker /samples/tosca-templates/vnfd/下可以看到很多模板的示例,可以进行参照。这边给出一个示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
tacker /samples/tosca-templates/vnfd/tosca-vnfd-hello-world.yamltosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0description: Demo examplemetadata: template_name: sample-tosca-vnfdtopology_template: node_templates: VDU1: type: tosca.nodes.nfv.VDU.Tacker capabilities: nfv_compute: properties: num_cpus: 1 mem_size: 512 MB disk_size: 1 GB properties: image: cirros-0.3.5-x86_64-disk availability_zone: nova mgmt_driver: noop config: | param0: key1 param1: key2 CP1: type: tosca.nodes.nfv.CP.Tacker properties: management: true order: 0 anti_spoofing_protection: false requirements: - virtualLink: node: VL1 - virtualBinding: node: VDU1 CP2: type: tosca.nodes.nfv.CP.Tacker properties: order: 1 anti_spoofing_protection: false requirements: - virtualLink: node: VL2 - virtualBinding: node: VDU1 CP3: type: tosca.nodes.nfv.CP.Tacker properties: order: 2 anti_spoofing_protection: false requirements: - virtualLink: node: VL3 - virtualBinding: node: VDU1 VL1: type: tosca.nodes.nfv.VL properties: network_name: net_mgmt vendor: Tacker VL2: type: tosca.nodes.nfv.VL properties: network_name: net0 vendor: Tacker VL3: type: tosca.nodes.nfv.VL properties: network_name: net1 vendor: Tacker |
注:详细的语法不是本文讨论的重点。在今后的分享中,会陆续的介绍。
3.根据收集的VNF信息进行配置文件的设计。VNF配置文件采用Yaml格式,内容字段由厂家自定义。配置文件中的内容,需要在后文中介绍的mgmt_drvier插件中进行解析,并根据解析出来的内容,对VNF进行配置。
4.根据收集的VNF信息进行策略文件的设计。目前策略文件,定义在中VNF Template中,以后会独立出来,可以灵活的调整的策略。
5. 根据VNF的配置需求,进行VNF配置插件的开发。插件是否需要开发,是由VNF来决定的,如果VNF不需要进行一些初始化配置、业务配置,则不需要进行插件的开发。
插件的开发
Tacker框架中,对插件定义了如下表的接口,在插件的开发的时候,需要对接口进行实现或重写,实现方式可以由VNF厂家自己实现,也可以参照ETSI规范或者相关企业标准实现。
概要的部署方式如下:
1) 实现上面的各个接口之后,将插件代码放在如下位置。
tacker/vnfm/mgmt_drivers/
2) 修改tacker/setup.cfg配置文件。
1 2 3 4 5 |
acker.tacker.mgmt.drivers = noop = tacker.vnfm.mgmt_drivers.noop:DeviceMgmtNoop openwrt = tacker.vnfm.mgmt_drivers. {your driver name}.{your driver name}:{your driver class name} oslo.config.opts = tacker.vnfm.mgmt_drivers.openwrt.openwrt = tacker.vnfm.mgmt_drivers. {your driver name}.{your driver name}:config_opts |
注: {your driver name}替换成插件的文件名称。{your driver class name}替换为插件文件类的名称。
3) 将代码部署到环境中。
1 |
# python setup.py install |
4)修改/usr/etc/tacker/tacker.conf配置文件
1 2 3 4 5 6 7 8 9 |
[{your driver name}] #{your driver name} 替换成 开发的driver名称。 # From tacker.vnfm.mgmt_drivers.{your driver name}.{your driver name} # user name to login {your driver name} (string value) #user = root # ssh 用的用户名 # password to login {your driver name} (string value) #password = # ssh 用的密码 # MGMT driver to communicate with Hosting VNF/logical service instance tacker # plugin will use (list value) #mgmt_driver = noop, {your driver name} |
目前tacker的mgmt_driver插件,只能在VNF实例化、更新、删除的时候,进行VNF的预处理和后处理,在扩缩容的时候,无法对进行VNF的预处理和后处理,而在实际的应用场景中,扩缩容的时候同样需要对VNF的进行配置,所以后续需要在mgmt_driver增加新的接口来处理扩缩容等场景下和VNF的交互。
转载自: 苏研大云人