Merge "Add ansible mgmt driver sample"

This commit is contained in:
Zuul 2022-02-16 12:23:48 +00:00 committed by Gerrit Code Review
commit 9e97abaf32
1 changed files with 224 additions and 0 deletions

View File

@ -0,0 +1,224 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Add sample ansible mgmt driver
==========================================
https://blueprints.launchpad.net/tacker/+spec/add-ansible-mgmt-driver-sample
This Specification describes a sample Mgmt Driver that enables VNF
Configuration using Ansible.
Problem description
===================
In the current community code, there is no Mgmt Driver which enables VNF
Configuration using Ansible.
Ansible is a general purpose configuration management tool.
Proposed change
===============
Enable VNF Configuration with specific LCMs and the following VNF Packages.
By using this driver, we can increase the configuration choices without
having to include specific setting in the VNF.
Since Ansible behaves according to Playbook, it has the advantage of
executing a uniform configuration when deploying multiple VNF from a single
VNF Package.
1) Support ansible driver configuration point of LCM
----------------------------------------------------
This sample ansible driver supports following configuration points of LCM.
- instantiation_end
- scale_start
- scale_end
- heal_end
- termination_start
2) Support VNF Package
----------------------
Perform VNF configuration using a VNF Package with the following structure.
There are two configuration points in Ansible Driver.
.. code-block:: console
VNF Package
!----TOSCA-Metadata
!----Definitions
!----Files
!----Scripts
!----ScriptANSIBLE
!----BaseHOT
!----UserData
ScriptANSIBLE
~~~~~~~~~~~~~
Contains the settings for running Ansible Script.
This includes the path to the Ansible Playbook that each LCM runs,
and the orders that should be executed according to each VDU, etc.
Also, here is defined the information for connecting to the host.
Connection username, SSH _ Key information, etc.
.. code-block:: yaml
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
~~~~~~~
The user needs to set an IP address to connect to the VNF for VNF Configuration.
This sample driver uses the HOT outputs parameter to specify the Port used for VNF Configuration.
.. code-block:: yaml
outputs:
mgmt_ip-VDUA:
value:
get_attr:
- CP1
- fixed_ips
- 0
- ip_address
Scripts
~~~~~~~
Contains the Playbook to run on each LCM.
They execute the Playbook specified by the vnflcm driver and ScriptANSIBLE
during each LCM operation.
The Ansible Driver Sample runs using the Ansible service on the same server
as Tacker.
.. seqdiag::
seqdiag {
node_width = 80;
edge_length = 100;
"Tacker-conductor"
"AnsibleMgmtDriver"
"ScriptANSIBLE"
"Ansible"
"VnfInstance"
"Tacker-conductor" -> "AnsibleMgmtDriver"
[label = "Execute LCM Configuration"];
"AnsibleMgmtDriver" -> "ScriptANSIBLE"
[label = "Get configuration setting and select ansible playbook"];
"AnsibleMgmtDriver" <- "ScriptANSIBLE"
[label = "return ansible playbook path at Scripts and configuration"];
"AnsibleMgmtDriver" -> "Ansible"
[label = "Execute ansible-playbook command using playbook in Scripts"];
"Ansible" -> "VnfInstance"
[label = "Configuration instance"];
}
Alternatives
------------
None
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Wataru Juso <w-juso@nec.com>
Other contributors:
Aldinson C. Esto <esto.aln@nec.com>
Work Items
----------
- Add parameter of mgmt_driver I/F in vnflcm_driver.py.
- Add ansible driver sample at tacker/samples/mgmt_driver/ansible
Dependencies
============
None
Testing
=======
None
Documentation Impact
====================
Complete the documentation for the user using this sample driver.
- How to find the prerequisites
- How to create a package
- How to operate LCM with this sample driver
References
==========
None