More Related Content
Similar to Fuel Plugins (20)
Fuel Plugins
- 1. Copyright © 2016 Mirantis, Inc. All rights reserved
www.mirantis.com
Fuel Plugins
The best way to integrate your project with FUEL@OPNFV
- 2. Copyright © 2016 Mirantis, Inc. All rights reserved
software.mirantis.com
Michał Skalski
mskalski@mirantis.com
Sr. OpenStack Deployment Engineer
Fuel@OPNFV commiter
Fuel ODL plugin author
- 3. Copyright © 2016 Mirantis, Inc. All rights reserved
Agenda
● How the Fuel deployment works?
● Fuel Plugin capabilities
● Create your own plugin
● FUEL@OPNFV plugins
● Questions
- 4. Copyright © 2016 Mirantis, Inc. All rights reserved
Deployment phases
Provisioning Deployment
MAIN
MAIN
MAIN
MAIN
PRE
DEPLOYMENT
MAIN
POST
DEPLOYMENT
Puppet modules: https://github.com/openstack/fuel-library
OS
- 5. Copyright © 2016 Mirantis, Inc. All rights reserved
Task-Based deployment
Provisioning
Primary
Controller
Controller Controller Compute
Cinder
...
Compute
Cinder
Task 1
Task 2
Task 3
Task N
...
Task 1
Task 2
Task 3
Task N
...
Task 1
Task 2
Task 3
Task N
...
Task 1
Task 2
Task 3
Task N
...
Task 1
Task 2
Task 3
Task N
...
Source: https://docs.google.com/presentation/d/1jZCFZlXHs_VhjtVYS2VuWgdxge5Q6sOMLz4bRLuw7YE
- 6. Copyright © 2016 Mirantis, Inc. All rights reserved
What you can do with Plugins?
Fuel plugin capabilities
- 7. Copyright © 2016 Mirantis, Inc. All rights reserved
Fuel plugins capabilities
● Install your own software
● Create new node role
● Assign tasks to new role
● Manage disk partition scheme
● Define compatibility with other roles
● Modify OpenStack installation
● Add your own tasks
● Skip or modify existing tasks
- 8. Copyright © 2016 Mirantis, Inc. All rights reserved
How to start?
Create your own plugin
- 9. Copyright © 2016 Mirantis, Inc. All rights reserved
Plugin developer environment
Fuel plugins: https://github.com/openstack/fuel-plugins
Install dependencies:
Create plugin directory:
# apt-get install build-essential python-pip git rpm
createrepo dpkg-dev ruby-dev
# pip install fuel-plugin-builder
# gem install fpm
# fpb --create my_plugin
- 10. Copyright © 2016 Mirantis, Inc. All rights reserved
Plugin structure
# tree my_plugin
my_plugin
├── components.yaml
├── deployment_scripts
│ └── deploy.sh
├── deployment_tasks.yaml
├── environment_config.yaml
├── my_plugin-1.0-1.0.0-1.noarch.rpm
├── LICENSE
├── metadata.yaml
├── network_roles.yaml
├── node_roles.yaml
├── pre_build_hook
├── README.md
├── repositories
│ ├── centos
│ └── ubuntu
├── tasks.yaml
└── volumes.yaml
Fuel UI wizard components
Directory for plugin tasks' code
Example shell script
Definition of plugin tasks
Fuel UI plugin specific parameters
A plugin package created after you build a plugin.
Standard Apache 2.0 license file
Information about plugin
Network roles specific data
Definition of new node roles created by a plugin
Actions to run on plugin build
Free-form description of plugin
Directory for plugin specific packages
for centos packages
for ubuntu packages
Deprecated, use deployment_tasks.yaml instead
Mapping between node roles and volume allocation
- 11. Copyright © 2016 Mirantis, Inc. All rights reserved
metadata.yaml
Describe plugin
Supported types of environments:
releases:
- os: ubuntu
version: mitaka-9.0
mode: ['ha']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu
- 12. Copyright © 2016 Mirantis, Inc. All rights reserved
nodes_role.yaml and volumes.yaml
Define your own role for nodes:
nodes_role.yaml:
opendaylight:
name: "OpenDaylight controller"
description: "OpenDaylight
SDN controller"
public_ip_required: false
limits:
max: 1
min: 1
volumes.yaml:
volumes: []
volumes_roles_mapping:
opendaylight:
- {allocate_size:
"min", id: "os"}
- 13. Copyright © 2016 Mirantis, Inc. All rights reserved
environment_config.yaml
Create configuration of plugin
Define Web UI fields
enable_l3_odl:
weight: 12
type: "checkbox"
value: false
label: "Use ODL to manage L3 traffic"
restrictions:
- networking_parameters:segmentation_type == 'vlan': Use tunneling
segmentation type.
Configuration stored in hiera:
# hiera plugin_name
- 15. Copyright © 2016 Mirantis, Inc. All rights reserved
pre_build_hook
Bash script run before plugin compilation
Can be used to fetch / build custom packages
Use fpm gem to create deb packages:
fpm -s dir -t deb --prefix /opt/opendaylight --deb-upstart "service" --
name opendaylight -d "openjdk-8-jre-headless" -C "src_directory"
- 16. Copyright © 2016 Mirantis, Inc. All rights reserved
deployment_tasks.yaml
Add your own tasks
- id: odl_dashboard_registration
type: puppet
role: [primary-controller]
required_for: [post_deployment_end]
requires: [post_deployment_start]
version: 2.0.0
parameters:
puppet_manifest: puppet/manifests/odl-dashboard.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 180
- 17. Copyright © 2016 Mirantis, Inc. All rights reserved
deployment_tasks.yaml
When my task should run?
PRE
DEPLOYMENT
MAIN
POST DEPLOYMENT
role: [compute]
[post_deployment_start]
[post_deployment_end]
groups: [controller,
compute]
requires: [openstack-
network-start
required_for: [openstack-
network-end]
role: [master]
[pre_deployment_start]
[pre_deployment_end]
- 18. Copyright © 2016 Mirantis, Inc. All rights reserved
deployment_tasks.yaml
Task graph
# fuel graph --env 1 --download > graph.gv
# fuel graph --render graph.gv --tred
- 19. Copyright © 2016 Mirantis, Inc. All rights reserved
Deployment scripts
Put your puppet manifest in deployment_scripts/puppet
To simplify troubleshooting start manifest with:
notice('MODULAR: my_plugin/new_task')
To fetch your plugin configuration inside puppet manifests:
my_plugin = hiera('my_plugin', {})
- 20. Copyright © 2016 Mirantis, Inc. All rights reserved
Build and install plugin
# fpb --build my_plugin
# fuel plugins --install my_plugin-1.0-1.0.0-1.noarch.rpm
# fuel plugins list
id | name | version | package_version | releases
---+-----------+---------+-----------------+--------------
1 | my_plugin | 1.0.1 | 4.0.0 | ubuntu (mitaka-9.0)
Transfer compiled plugin to fuel master
- 21. Copyright © 2016 Mirantis, Inc. All rights reserved
OPNFV Fuel plugins
Userspace OVS support, OpenvSwitch with DPDK
Mark Gray, Billy Mahony
Intel
https://gerrit.opnfv.org/gerrit/#/admin/projects/ovsnfv
ONOS SDN controller
Wu Wenbin
Huawei
http://git.openstack.org/cgit/openstack/fuel-plugin-onos/
- 22. Copyright © 2016 Mirantis, Inc. All rights reserved
OPNFV Fuel plugins
OVS with NSH
Ling Yu, Ruijing Guo
Intel
https://github.com/openstack/fuel-plugin-ovs
BGPVPN and OpenDaylight plugins
Nikolas Hermanns, Ferenc Cserepkei, Manuel Buil
Ericsson
Michal Skalski, Mirantis
https://github.com/openstack/fuel-plugin-bgpvpn
https://github.com/openstack/fuel-plugin-opendaylight
- 23. Copyright © 2016 Mirantis, Inc. All rights reserved
Other resources
Fuel Plugins Handbook:
https://goo.gl/d6y8ct
Fuel plugins wiki:
https://wiki.openstack.org/wiki/Fuel/Plugins