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]