添加示例 Ansible 管理驱动

https://blueprints.launchpad.net/tacker/+spec/add-ansible-mgmt-driver-sample

本规范描述了一个示例管理驱动,它使用 Ansible 实现 VNF 配置。

问题描述

在当前的社区代码中,没有使用 Ansible 实现 VNF 配置的管理驱动。Ansible 是一种通用的配置管理工具。

提议的变更

使用特定的 LCM 和以下 VNF 包启用 VNF 配置。

通过使用此驱动,我们可以增加配置选项,而无需在 VNF 中包含特定的设置。由于 Ansible 根据 Playbook 执行,因此在从单个 VNF 包部署多个 VNF 时,具有执行统一配置的优势。

1) 支持 LCM 的 Ansible 驱动配置点

此示例 Ansible 驱动支持 LCM 的以下配置点。

  • instantiation_end

  • scale_start

  • scale_end

  • heal_end

  • termination_start

2) 支持 VNF 包

使用具有以下结构的 VNF 包执行 VNF 配置。Ansible 驱动程序中有两个配置点。

VNF Package
!----TOSCA-Metadata
!----Definitions
!----Files
!----Scripts
!----ScriptANSIBLE
!----BaseHOT
!----UserData

ScriptANSIBLE

包含运行 Ansible 脚本的设置。这包括每个 LCM 运行的 Ansible Playbook 的路径,以及应根据每个 VDU 执行的顺序等。此外,这里定义了连接到主机的相关信息。连接用户名、SSH _ Key 信息等。

vdus:
 VDUA:
   config:
     order: 1
     vm_app_config:
       instantiation_end:
         - path: Scripts/VDUA-instantiation.yaml
           order: 0
       heal_end:
         - path: Scripts/VDUA-healing.yaml
           order: 0

 VDUB:
   config:
     order: 1
     vm_app_config:
       instantiation_end:
         - path: Scripts/VDUB-instantiation.yaml
           order: 0
       heal_end:
         - path: Scripts/VDUB-healing.yaml
           order: 0

BaseHOT

用户需要设置一个 IP 地址来连接到 VNF 以进行 VNF 配置。此示例驱动程序使用 HOT 输出参数来指定用于 VNF 配置的端口。

outputs:
  mgmt_ip-VDUA:
    value:
      get_attr:
      - CP1
      - fixed_ips
      - 0
      - ip_address

Scripts

包含在每个 LCM 上运行的 Playbook。它们在每个 LCM 操作期间执行 vnflcm 驱动程序和 ScriptANSIBLE 指定的 Playbook。

Ansible 驱动程序示例在与 Tacker 相同的服务器上使用 Ansible 服务运行。

../../_images/0137.png

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Wataru Juso <w-juso@nec.com>

其他贡献者

Aldinson C. Esto <esto.aln@nec.com>

工作项

  • 在 vnflcm_driver.py 中添加 mgmt_driver I/F 的参数。

  • 在 tacker/samples/mgmt_driver/ansible 中添加 Ansible 驱动程序示例

依赖项

测试

文档影响

完成使用此示例驱动程序的用户的文档。

  • 如何查找先决条件

  • 如何创建包

  • 如何使用此示例驱动程序操作 LCM

参考资料