Ansible 驱动程序增强 (示例管理驱动程序)

https://blueprints.launchpad.net/tacker/+spec/enhance-ansible-driver-2024oct

添加几个特性,使其对租户使用和 Tacker 管理员更加灵活。

  • 特性 1:在 VNF-Package 中的 Ansible 驱动程序配置文件中指定 Ansible 版本的特性。

  • 特性 2:在 tacker.conf 中指定 ansible-playbook 执行的环境变量的特性。

问题描述

目前 Tacker 只支持一个版本的 Ansible。因此,当租户在 VNF-Package 中包含只能与特定版本的 Ansible 配合工作的 Playbook 时,Playbook 可能会出现兼容性问题。

如果 Tacker 管理员希望强制执行与 ansible-playbook 执行相关的选项,例如指定日志存储位置或自定义回调插件,则必须直接修改 Ansible 驱动程序的源代码。

这些问题缺乏对租户和管理员的灵活性。

提议的变更

修改范围仅限于 samples/mgmt_driver/ansible

特性 1

Tacker 管理员为每个版本的 Ansible 创建环境,并在 tacker.conf 中指定 Ansible 版本标识符与 venv 路径的映射。

tacker.conf 示例

[ansible]
venv_path=ansible-2.9:/opt/my-envs/2.9
venv_path=ansible-2.10:/opt/my-envs/2.10
venv_path=ansible-2.11:/opt/my-envs/2.11

Tacker 租户在 VNF-Package 中的 Ansible 驱动程序配置中指定 Ansible 版本标识符。

VNFD 中 ansible-driver 配置示例

vdus:
  NodeA_0:
    config:
      order: 0
      vm_app_config:
        type: ansible
        instantiation:
          - path: _VAR_vnf_package_path/Scripts/test/test_ansible.yml
            ansible_version: "ansible-2.9" # here

Tacker conductor 检查包中的版本标识符,并切换到匹配的 venv 路径以执行 ansible-playbook

如果路径不存在或版本标识符未定义,则 ansible-playbook 将使用默认版本执行(与之前相同)。

特性 2

Tacker 管理员在 tacker.conf 中指定环境变量,用于在执行 ansible-playbook 时使用。

tacker.conf 示例

[ansible]
env_vars = ANSIBLE_LOG_PATH:/var/log/tacker/ansible_driver/ansible.log
env_vars = ANSIBLE_STDOUT_CALLBACK:kddi-custom-callback

这些环境变量作为 ANSIBLE_CONFIG 环境变量传递,因此它们优先于租户在 VNF-Package 中的 ansible.cfg [1] 中指定的那些环境变量。

这允许管理员根据环境强制执行诸如日志存储位置之类的设置。

Tacker conductor 在 LCM 期间检查 tacker.conf 中的环境变量并执行 ansible-playbook

备选方案

  • 特性 1

  • 特性 2

    Tacker 管理员直接修改 Ansible 驱动程序的源代码。

数据模型影响

REST API 影响

安全影响

此前,Tacker 租户可以在 VNF-Package 中的 ansible.cfg 中自由指定 ansible-playbook 执行选项。但是,通过此更改,Tacker 管理员可以通过 tacker.conf 强制执行配置,从而防止意外操作并增强安全性。

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Hitomi Koba <hi-koba@kddi.com>

工作项

  • 更新 samples/mgmt_driver/ansible 中的部分代码。

  • 更新部分文档。

依赖项

测试

无 (因为 ansible-driver 是示例实现)

文档影响

  • 如何使用 Ansible 驱动程序的 Mgmt Driver [2]

参考资料