SlideShare a Scribd company logo
1 of 24
Download to read offline
Copyright © 2016 Mirantis, Inc. All rights reserved
www.mirantis.com
Fuel Plugins
The best way to integrate your project with FUEL@OPNFV
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
Copyright © 2016 Mirantis, Inc. All rights reserved
Agenda
● How the Fuel deployment works?
● Fuel Plugin capabilities
● Create your own plugin
● FUEL@OPNFV plugins
● Questions
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
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
Copyright © 2016 Mirantis, Inc. All rights reserved
What you can do with Plugins?
Fuel plugin capabilities
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
Copyright © 2016 Mirantis, Inc. All rights reserved
How to start?
Create your own plugin
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
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
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
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"}
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
Copyright © 2016 Mirantis, Inc. All rights reserved
environment_config.yaml
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"
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
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]
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
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', {})
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
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/
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
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
Copyright © 2016 Mirantis, Inc. All rights reserved
Thank you
Questions?

More Related Content

What's hot

Copr HD OpenStack Day India
Copr HD OpenStack Day IndiaCopr HD OpenStack Day India
Copr HD OpenStack Day Indiaopenstackindia
 
Build a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-managerBuild a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-managerK Rain Leander
 
A GitOps model for High Availability and Disaster Recovery on EKS
A GitOps model for High Availability and Disaster Recovery on EKSA GitOps model for High Availability and Disaster Recovery on EKS
A GitOps model for High Availability and Disaster Recovery on EKSWeaveworks
 
The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0RUDDER
 
client-go: The Good, The Bad and The Ugly
client-go: The Good, The Bad and The Uglyclient-go: The Good, The Bad and The Ugly
client-go: The Good, The Bad and The UglyLili Cosic
 
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersDeploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersSyah Dwi Prihatmoko
 
Monitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorMonitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorLili Cosic
 
Role of sdn controllers in open stack
Role of sdn controllers in open stackRole of sdn controllers in open stack
Role of sdn controllers in open stackopenstackindia
 
OpenStack Automation Overview
OpenStack Automation OverviewOpenStack Automation Overview
OpenStack Automation OverviewDmitri Zimine
 
Deploying openstack using ansible
Deploying openstack using ansibleDeploying openstack using ansible
Deploying openstack using ansibleopenstackindia
 
OpenShift In a Nutshell - Episode 03 - Infrastructure part I
OpenShift In a Nutshell - Episode 03 - Infrastructure part IOpenShift In a Nutshell - Episode 03 - Infrastructure part I
OpenShift In a Nutshell - Episode 03 - Infrastructure part IBehnam Loghmani
 
Openstack benelux 2015
Openstack benelux 2015Openstack benelux 2015
Openstack benelux 2015Microsoft
 
Are We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack DeploymentAre We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack DeploymentKen Pepple
 
Openshift + Openstack + Fedora = Awesome
Openshift + Openstack + Fedora = AwesomeOpenshift + Openstack + Fedora = Awesome
Openshift + Openstack + Fedora = AwesomeMark Atwood
 
Defining & Enforcing Policies the GitOps Way
Defining & Enforcing Policies the GitOps WayDefining & Enforcing Policies the GitOps Way
Defining & Enforcing Policies the GitOps WayWeaveworks
 
Deploying OpenStack with Ansible
Deploying OpenStack with AnsibleDeploying OpenStack with Ansible
Deploying OpenStack with AnsibleKevin Carter
 

What's hot (20)

Devstack On Demand
Devstack On DemandDevstack On Demand
Devstack On Demand
 
Copr HD OpenStack Day India
Copr HD OpenStack Day IndiaCopr HD OpenStack Day India
Copr HD OpenStack Day India
 
Build a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-managerBuild a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-manager
 
A GitOps model for High Availability and Disaster Recovery on EKS
A GitOps model for High Availability and Disaster Recovery on EKSA GitOps model for High Availability and Disaster Recovery on EKS
A GitOps model for High Availability and Disaster Recovery on EKS
 
The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0The new plugin ecosystem in RUDDER 5.0
The new plugin ecosystem in RUDDER 5.0
 
client-go: The Good, The Bad and The Ugly
client-go: The Good, The Bad and The Uglyclient-go: The Good, The Bad and The Ugly
client-go: The Good, The Bad and The Ugly
 
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersDeploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
 
Monitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorMonitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operator
 
Role of sdn controllers in open stack
Role of sdn controllers in open stackRole of sdn controllers in open stack
Role of sdn controllers in open stack
 
OpenStack Automation Overview
OpenStack Automation OverviewOpenStack Automation Overview
OpenStack Automation Overview
 
RPM Factory for RDO
RPM Factory for RDORPM Factory for RDO
RPM Factory for RDO
 
Deploying openstack using ansible
Deploying openstack using ansibleDeploying openstack using ansible
Deploying openstack using ansible
 
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes
 
HA in OpenStack service - meetup #9
HA in OpenStack service - meetup #9HA in OpenStack service - meetup #9
HA in OpenStack service - meetup #9
 
OpenShift In a Nutshell - Episode 03 - Infrastructure part I
OpenShift In a Nutshell - Episode 03 - Infrastructure part IOpenShift In a Nutshell - Episode 03 - Infrastructure part I
OpenShift In a Nutshell - Episode 03 - Infrastructure part I
 
Openstack benelux 2015
Openstack benelux 2015Openstack benelux 2015
Openstack benelux 2015
 
Are We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack DeploymentAre We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack Deployment
 
Openshift + Openstack + Fedora = Awesome
Openshift + Openstack + Fedora = AwesomeOpenshift + Openstack + Fedora = Awesome
Openshift + Openstack + Fedora = Awesome
 
Defining & Enforcing Policies the GitOps Way
Defining & Enforcing Policies the GitOps WayDefining & Enforcing Policies the GitOps Way
Defining & Enforcing Policies the GitOps Way
 
Deploying OpenStack with Ansible
Deploying OpenStack with AnsibleDeploying OpenStack with Ansible
Deploying OpenStack with Ansible
 

Similar to Fuel Plugins

Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guidevjvarenya
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool boxbpowell29a
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Mohamad Hassan
 
Automação do físico ao NetSecDevOps
Automação do físico ao NetSecDevOpsAutomação do físico ao NetSecDevOps
Automação do físico ao NetSecDevOpsRaul Leite
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introductionVictor Zhang
 
Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...Docker, Inc.
 
Surat MuleSoft Meetup#2 - Anypoint Runtime Fabric
Surat MuleSoft Meetup#2 - Anypoint Runtime FabricSurat MuleSoft Meetup#2 - Anypoint Runtime Fabric
Surat MuleSoft Meetup#2 - Anypoint Runtime FabricJitendra Bafna
 
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...Amazon Web Services
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)Soshi Nemoto
 
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...Amazon Web Services
 
How To Install Openbravo ERP 2.50 MP43 in Ubuntu
How To Install Openbravo ERP 2.50 MP43 in UbuntuHow To Install Openbravo ERP 2.50 MP43 in Ubuntu
How To Install Openbravo ERP 2.50 MP43 in UbuntuWirabumi Software
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushPantheon
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMAlexander Shopov
 
How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?Zend by Rogue Wave Software
 
2016_1201_gangler_ppt
2016_1201_gangler_ppt2016_1201_gangler_ppt
2016_1201_gangler_pptSecure-24
 
Using RPM's to Automagically to install Oracle Agents to EM12C
Using RPM's to Automagically to install Oracle Agents to EM12CUsing RPM's to Automagically to install Oracle Agents to EM12C
Using RPM's to Automagically to install Oracle Agents to EM12CSecure-24
 
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow
 

Similar to Fuel Plugins (20)

Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guide
 
Automation day red hat ansible
   Automation day red hat ansible    Automation day red hat ansible
Automation day red hat ansible
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool box
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017
 
Automação do físico ao NetSecDevOps
Automação do físico ao NetSecDevOpsAutomação do físico ao NetSecDevOps
Automação do físico ao NetSecDevOps
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...
 
Surat MuleSoft Meetup#2 - Anypoint Runtime Fabric
Surat MuleSoft Meetup#2 - Anypoint Runtime FabricSurat MuleSoft Meetup#2 - Anypoint Runtime Fabric
Surat MuleSoft Meetup#2 - Anypoint Runtime Fabric
 
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...
Mythical Mysfits: Monolith to Microservices with Docker and Fargate - MAD305 ...
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
 
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...
Mythical Mysfits: Monolith to Microservice with Docker and AWS Fargate (CON21...
 
How To Install Openbravo ERP 2.50 MP43 in Ubuntu
How To Install Openbravo ERP 2.50 MP43 in UbuntuHow To Install Openbravo ERP 2.50 MP43 in Ubuntu
How To Install Openbravo ERP 2.50 MP43 in Ubuntu
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
One-Man Ops
One-Man OpsOne-Man Ops
One-Man Ops
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPM
 
How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?
 
2016_1201_gangler_ppt
2016_1201_gangler_ppt2016_1201_gangler_ppt
2016_1201_gangler_ppt
 
Using RPM's to Automagically to install Oracle Agents to EM12C
Using RPM's to Automagically to install Oracle Agents to EM12CUsing RPM's to Automagically to install Oracle Agents to EM12C
Using RPM's to Automagically to install Oracle Agents to EM12C
 
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
 

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
  • 14. Copyright © 2016 Mirantis, Inc. All rights reserved environment_config.yaml
  • 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
  • 24. Copyright © 2016 Mirantis, Inc. All rights reserved Thank you Questions?