www.mirantis.com
Copyright ©2015 Mirantis, Inc. All rights reserved
Application	
  Management in	
  	
  
OpenStack
St.	
  Louis	
   Meetup
Ben	
  Silverman,	
  Cloud	
  Architect, Mirantis
@mirantisBen
Main	
  Trends
DevOps
Cloud
Network
Function
Virtualization
(NFV)
IT-as-a-
Service
Big Data
processing
Use	
  Case	
  #1	
  -­‐ DevOps	
  Cloud
Environment	
  for	
  developers	
  to	
  create,	
  test	
  
and	
  publish	
  applications
Environment	
  includes	
  development	
  tools	
  
and	
  possibly	
  common	
  application	
  
components
Use	
  existing	
  or	
  DIY	
  PaaS platform	
  -­‐ Cloud	
  
Foundry,	
  OpenShift,	
  Appcara etc.
Even	
  Simple	
  Systems	
  Exhibit	
  Complex Behaviors
Xn+1 =rXn (1-Xn)
Even  a  simple  logistic    
system  results  in    
complex outcomes
Reference:   Wiki:  Logistic  Maps  h ttps://en.wikipedia.org/wiki/Logistic_map
Copyright ©2015 Mirantis, Inc. All rights reserved
Large	
   Distributed	
  Systems	
  are Complex
Copyright ©2015 Mirantis, Inc. All rights reserved
Large	
   Distributed	
  Systems	
  are Complex
Copyright ©2015 Mirantis, Inc. All rights reserved
Large	
   Distributed	
  Systems	
  are Complex
Copyright ©2015 Mirantis, Inc. All rights reserved
Large	
   Distributed	
  Systems	
  are Complex
Copyright ©2015 Mirantis, Inc. All rights reserved
Large	
   Distributed	
  Systems	
  are Complex
Copyright ©2015 Mirantis, Inc. All rights reserved
How	
  to	
  Handle Complexity?
Copyright ©2015 Mirantis, Inc. All rights reserved
Is	
  there	
  an	
  easier	
  way?
OpenStack exposes	
  
infrastructure resources	
  
so	
  they	
  can	
  be controlled
programmatically
→Compute
→Network
→Persistent Storage
→Ephemeral Caching
→Auth/Access
→Monitor/Logs/Audit
→OS-­‐Image/Virtualization
→User Credentials
Each	
  app	
  “can”	
  specify	
  its	
  own infrastructure...
Copyright ©2015 Mirantis, Inc. All rights reserved
Copyright ©2015 Mirantis, Inc. All rights reserved
Every	
  	
  
programmable	
  	
  
resource	
  has	
  a	
  	
  
potentially	
  	
  
independent	
  	
  
revision
cycle.
Application’s	
  	
  
internal	
  	
  
configuration
… but each app also becomes a snowflake*
APPLICATION
/WORKLOAD
/SERVICE
Network	
  	
  
switch and	
  	
  
routing
Persistent	
  	
  
Storage
Operating
System
Image
East/West	
  	
  
authentication	
  
access/control
Ephemeral
(cache)	
  	
  
Storage
Monitoring	
  	
  
Logging
User	
  	
  
credentials
*snowflake	
   -­‐-­‐ unique	
  configuration,	
  	
  
difficult	
   to	
  manage	
   consistently
Application	
  
Workload
Get,	
  Share	
  and	
  Run	
  Apps	
  on	
  Demand
Create Catalog
● Easily add new apps
● Describe forms,app
dependencies, suggested
configurations, billing rules
etc.
Deploy Apps
● Deploy applications and services
with a push of a button
● Choose apps, specify settings,
and deploy
Automatically
Manage Apps
● Monitor with Ceilometer
● Automatically self-heal,scale
up & down, failover, backup
● Application specific actions
● Track usage
Murano with Open APIs or GUI
Murano – Openstack App	
  Catalog
Puppet	
  	
  
Chef	
  	
  
Salt	
  	
  
Heat
...
Copyright ©2015 Mirantis, Inc. All rights reserved
Declarative	
  Approaches	
  to Simplify
Enable	
  operators to	
  control	
  	
  
the	
  end	
  state	
  of	
  the cloud
Declarative	
  Approaches	
  to Simplify
Copyright ©2015 Mirantis, Inc. All rights reserved
Local	
  cloud dependencies
● Networks
● Security groups
● Availability zones
● Roles
● Storage
● Backup software...
Result:	
  versions	
  of	
  	
  
templates	
  for	
  every	
  	
  
deployment environment
How	
  can	
  the	
  developer	
  	
  
define?
● Deploy
● Upgrade
● Scale
● Backup/restore
Copyright ©2015 Mirantis, Inc. All rights reserved
For	
  every	
  deployment	
  	
  
environment?
The	
  developer	
  shouldn’t	
  care	
  	
  
at	
  all	
  about	
  the	
  deployed	
  	
  
environment.
Declarative	
  Approaches	
  to Simplify
Developer	
  Defines	
  Generic Lifecycle
Copyright ©2015 Mirantis, Inc. All rights reserved
Define	
  the	
  basic	
  steps	
  for	
  each	
  lifecycle	
  events	
  using	
  a	
  	
  
simple	
  workflow language
Object	
  oriented	
  to	
  define	
  events	
  with inputs
● deploy,	
  upgrade,	
  scale,	
  backup,	
  restore, etc…
Documentation
https://murano.readthedocs.org/en/stable-­‐kilo/articles/app_pkg.html
Murano	
  partitions	
  OpenStack	
  cloud	
  app/service	
  lifecycle mgt.
1. Catalog users:
Launch	
  apps/services	
   independent	
  of	
  infra dependencies
2. Catalog Application/Service developers
Specify	
  apps’	
  infra	
  needs,	
  no	
  direct	
  binding	
  of resources
3. Cloud administrators
Configure	
  and	
  control	
  apps	
  for	
  automation	
  for	
  
deployment,	
  	
  operations for OpenStack	
  cloud
apps/workloads
Murano	
  delivers	
  apps/services	
  to	
  OpenStack faster
OperatorDeveloper
Imperative	
  Approach	
  to Simplify
Service	
  	
  
User
Publish	
  toCatalog
InfrastructureRequirements
Copyright ©2015 Mirantis, Inc. All rights reserved
Catalog
Service
User
Muranto
Catalog	
  
Developer
Murano
Catalog
Operator
Infrastructure	
  Requirements
Deployment	
  cfg &	
  app	
  mgt
Keep complexity in the box improves out-­‐of-­‐box
1.Define
-­‐ RawApplication
-­‐ Murano	
  Packaging	
  	
  
and	
  Logic
-­‐ Heat,	
  etc.	
  (Orches-­‐
tration	
  Assets	
  &	
  	
  
Templates)
-­‐ VMs/OS-­‐Images
2.	
  Operate 1.	
  Click
Copyright ©2015 Mirantis, Inc. All rights reserved
2.	
  Launch
OpenStack	
  Catalog	
  	
  
Developers	
  and Operators
White Box
OpenStackCatalog	
  
Users
Black	
  Box
Murano	
  High-­‐Level Workflow
Define	
  	
  
App/Service	
  
Lifecycle	
  	
  
Actions
Push	
  Murano	
  	
  
Package	
  toGit
Pull	
   Murano	
  	
  
Packagefrom	
  
Git
Modifyfor Local	
  
Cloud	
  and	
  	
  
Merge
Publish to	
  	
  
Catalog
BrowseCatalog
Manage
Environ-­‐
ments
App/Service	
  	
  
Actions
ConsumerOperatorDeveloper
Copyright ©2015 Mirantis, Inc. All rights reserved
How	
  do	
  developers	
  start	
  working	
  with	
  Murano?
1. Glance
2. Heat	
  Templates
3. Murano Packages
Glance	
  images	
  – 3	
  words	
  “Disk	
  Image	
  Builder”
Drop	
  it	
  like	
  it’s	
  HOT	
  – Heat	
  Orchestration	
  Templates
Murano – Ingredients
• YAML	
  definitions	
  of	
  assets
• Javascript site	
  to	
  display
• New	
  content/assets	
  flow	
  
through	
  the	
  OpenStack
Community	
  Process
• Cosumable via	
  Horizon	
  or	
  
an	
  OpenStack API
http://murano.readthedocs.org
Developer	
  Defines	
  Generic Lifecycle
https://murano.readthedocs.org/en/stable-­kilo/murano_pl/murano_pl_index.html
Copyright ©2015 Mirantis, Inc. All rights reserved
• MuranoPL	
  Core	
  Library
• Class:	
  Object
• Class:	
  Application
• Class:	
  SecurityGroupManager
• Class:	
  Environment
• Class:	
  Instance
• Class:	
  Network
• Class:	
  NewNetwork
• Murano PL	
  System	
  Class	
  Definitions
• io.murano.system.Resources
• io.murano.system.Agent
• io.murano.system.AgentListener
• io.murano.system.HeatStack
• io.murano.system.InstanceNotifier
• io.murano.system.NetworkExplorer
• io.murano.system.StatusReporter
Wordpress Example
Copyright ©2015 Mirantis, Inc. All rights reserved
https://github.com/openstack/murano-­‐apps/tree/master/WordPress/package
Wordpress Example
Copyright ©2015 Mirantis, Inc. All rights reserved
Wordpress Example
Copyright ©2015 Mirantis, Inc. All rights reserved
Cloud	
  Operator	
  Adapts	
  to	
  Local Clouds
Application  |  Chef  |  Puppet (extensible)
https://github.com/openstack/murano-­‐
agent/tree/master/muranoagent/executors
Copyright ©2015 Mirantis, Inc. All rights reserved
Cloud	
  Operator	
  Adapts	
  to	
  Local Clouds
Copyright ©2015 Mirantis, Inc. All rights reserved
Easily	
  re-­‐use	
  Heat,	
  Chef,	
  Puppet	
  and	
  any	
  local scripts
https://github.com/openstack/murano-­‐
apps/blob/master/Chef/GitChef/package/Classes/GitChef.	
   y	
  aml
to	
  specify	
  local	
  rules	
  and policies
Cloud Operator
Copyright ©2015 Mirantis, Inc. All rights reserved
Refine	
  the	
  UI	
  to	
  only	
  ask	
  for	
  needed input
https://murano.readthedocs.org/en/stable-­‐kilo/articles/dynamic_ui.html
“The	
  main	
  purpose	
   of	
  Dynamic	
  UI	
  is	
  to	
  generate	
  application	
  creation	
  forms	
  “on-­‐the-­‐fly”.	
  
Murano dashboard	
  doesn’t	
   know	
  anything	
  about	
  what	
  applications	
  can	
  be	
  deployed	
  and	
  
which	
  web	
  form	
  are	
  needed	
  to	
  create	
  application	
  instance.	
  So	
  all	
  application	
  definitions	
  
should	
  contain	
  a	
  yaml file	
  which	
  tells	
  dashboard	
  how	
  to	
  create	
  an	
  application	
  and	
  what	
  
validations	
  are	
  to	
  be	
  applied.”	
  
Consumer	
  Uses	
  Cloud	
  Operator	
  Controlled UI/API

OpenStack Murano

  • 1.
    www.mirantis.com Copyright ©2015 Mirantis,Inc. All rights reserved Application  Management in     OpenStack St.  Louis   Meetup Ben  Silverman,  Cloud  Architect, Mirantis @mirantisBen
  • 2.
  • 3.
    Use  Case  #1  -­‐ DevOps  Cloud Environment  for  developers  to  create,  test   and  publish  applications Environment  includes  development  tools   and  possibly  common  application   components Use  existing  or  DIY  PaaS platform  -­‐ Cloud   Foundry,  OpenShift,  Appcara etc.
  • 4.
    Even  Simple  Systems  Exhibit  Complex Behaviors Xn+1 =rXn (1-Xn) Even  a  simple  logistic     system  results  in     complex outcomes Reference:   Wiki:  Logistic  Maps  h ttps://en.wikipedia.org/wiki/Logistic_map Copyright ©2015 Mirantis, Inc. All rights reserved
  • 5.
    Large   Distributed  Systems  are Complex Copyright ©2015 Mirantis, Inc. All rights reserved
  • 6.
    Large   Distributed  Systems  are Complex Copyright ©2015 Mirantis, Inc. All rights reserved
  • 7.
    Large   Distributed  Systems  are Complex Copyright ©2015 Mirantis, Inc. All rights reserved
  • 8.
    Large   Distributed  Systems  are Complex Copyright ©2015 Mirantis, Inc. All rights reserved
  • 9.
    Large   Distributed  Systems  are Complex Copyright ©2015 Mirantis, Inc. All rights reserved
  • 10.
    How  to  HandleComplexity? Copyright ©2015 Mirantis, Inc. All rights reserved
  • 11.
    Is  there  an  easier  way?
  • 12.
    OpenStack exposes   infrastructureresources   so  they  can  be controlled programmatically →Compute →Network →Persistent Storage →Ephemeral Caching →Auth/Access →Monitor/Logs/Audit →OS-­‐Image/Virtualization →User Credentials Each  app  “can”  specify  its  own infrastructure... Copyright ©2015 Mirantis, Inc. All rights reserved
  • 13.
    Copyright ©2015 Mirantis,Inc. All rights reserved Every     programmable     resource  has  a     potentially     independent     revision cycle. Application’s     internal     configuration … but each app also becomes a snowflake* APPLICATION /WORKLOAD /SERVICE Network     switch and     routing Persistent     Storage Operating System Image East/West     authentication   access/control Ephemeral (cache)     Storage Monitoring     Logging User     credentials *snowflake   -­‐-­‐ unique  configuration,     difficult   to  manage   consistently Application   Workload
  • 14.
    Get,  Share  and  Run  Apps  on  Demand Create Catalog ● Easily add new apps ● Describe forms,app dependencies, suggested configurations, billing rules etc. Deploy Apps ● Deploy applications and services with a push of a button ● Choose apps, specify settings, and deploy Automatically Manage Apps ● Monitor with Ceilometer ● Automatically self-heal,scale up & down, failover, backup ● Application specific actions ● Track usage Murano with Open APIs or GUI
  • 15.
    Murano – OpenstackApp  Catalog
  • 16.
    Puppet     Chef     Salt     Heat ... Copyright ©2015 Mirantis, Inc. All rights reserved Declarative  Approaches  to Simplify Enable  operators to  control     the  end  state  of  the cloud
  • 17.
    Declarative  Approaches  toSimplify Copyright ©2015 Mirantis, Inc. All rights reserved Local  cloud dependencies ● Networks ● Security groups ● Availability zones ● Roles ● Storage ● Backup software... Result:  versions  of     templates  for  every     deployment environment
  • 18.
    How  can  the  developer     define? ● Deploy ● Upgrade ● Scale ● Backup/restore Copyright ©2015 Mirantis, Inc. All rights reserved For  every  deployment     environment? The  developer  shouldn’t  care     at  all  about  the  deployed     environment. Declarative  Approaches  to Simplify
  • 19.
    Developer  Defines  GenericLifecycle Copyright ©2015 Mirantis, Inc. All rights reserved Define  the  basic  steps  for  each  lifecycle  events  using  a     simple  workflow language Object  oriented  to  define  events  with inputs ● deploy,  upgrade,  scale,  backup,  restore, etc… Documentation https://murano.readthedocs.org/en/stable-­‐kilo/articles/app_pkg.html
  • 20.
    Murano  partitions  OpenStack  cloud  app/service  lifecycle mgt. 1. Catalog users: Launch  apps/services   independent  of  infra dependencies 2. Catalog Application/Service developers Specify  apps’  infra  needs,  no  direct  binding  of resources 3. Cloud administrators Configure  and  control  apps  for  automation  for   deployment,    operations for OpenStack  cloud apps/workloads Murano  delivers  apps/services  to  OpenStack faster
  • 21.
    OperatorDeveloper Imperative  Approach  toSimplify Service     User Publish  toCatalog InfrastructureRequirements Copyright ©2015 Mirantis, Inc. All rights reserved Catalog Service User Muranto Catalog   Developer Murano Catalog Operator Infrastructure  Requirements Deployment  cfg &  app  mgt
  • 22.
    Keep complexity inthe box improves out-­‐of-­‐box 1.Define -­‐ RawApplication -­‐ Murano  Packaging     and  Logic -­‐ Heat,  etc.  (Orches-­‐ tration  Assets  &     Templates) -­‐ VMs/OS-­‐Images 2.  Operate 1.  Click Copyright ©2015 Mirantis, Inc. All rights reserved 2.  Launch OpenStack  Catalog     Developers  and Operators White Box OpenStackCatalog   Users Black  Box
  • 23.
    Murano  High-­‐Level Workflow Define     App/Service   Lifecycle     Actions Push  Murano     Package  toGit Pull   Murano     Packagefrom   Git Modifyfor Local   Cloud  and     Merge Publish to     Catalog BrowseCatalog Manage Environ-­‐ ments App/Service     Actions ConsumerOperatorDeveloper Copyright ©2015 Mirantis, Inc. All rights reserved
  • 24.
    How  do  developers  start  working  with  Murano? 1. Glance 2. Heat  Templates 3. Murano Packages
  • 25.
    Glance  images  –3  words  “Disk  Image  Builder”
  • 26.
    Drop  it  like  it’s  HOT  – Heat  Orchestration  Templates
  • 27.
    Murano – Ingredients •YAML  definitions  of  assets • Javascript site  to  display • New  content/assets  flow   through  the  OpenStack Community  Process • Cosumable via  Horizon  or   an  OpenStack API
  • 28.
  • 29.
    Developer  Defines  GenericLifecycle https://murano.readthedocs.org/en/stable-­kilo/murano_pl/murano_pl_index.html Copyright ©2015 Mirantis, Inc. All rights reserved • MuranoPL  Core  Library • Class:  Object • Class:  Application • Class:  SecurityGroupManager • Class:  Environment • Class:  Instance • Class:  Network • Class:  NewNetwork • Murano PL  System  Class  Definitions • io.murano.system.Resources • io.murano.system.Agent • io.murano.system.AgentListener • io.murano.system.HeatStack • io.murano.system.InstanceNotifier • io.murano.system.NetworkExplorer • io.murano.system.StatusReporter
  • 30.
    Wordpress Example Copyright ©2015Mirantis, Inc. All rights reserved https://github.com/openstack/murano-­‐apps/tree/master/WordPress/package
  • 31.
    Wordpress Example Copyright ©2015Mirantis, Inc. All rights reserved
  • 32.
    Wordpress Example Copyright ©2015Mirantis, Inc. All rights reserved
  • 33.
    Cloud  Operator  Adapts  to  Local Clouds Application  |  Chef  |  Puppet (extensible) https://github.com/openstack/murano-­‐ agent/tree/master/muranoagent/executors Copyright ©2015 Mirantis, Inc. All rights reserved
  • 34.
    Cloud  Operator  Adapts  to  Local Clouds Copyright ©2015 Mirantis, Inc. All rights reserved Easily  re-­‐use  Heat,  Chef,  Puppet  and  any  local scripts https://github.com/openstack/murano-­‐ apps/blob/master/Chef/GitChef/package/Classes/GitChef.   y  aml to  specify  local  rules  and policies
  • 35.
    Cloud Operator Copyright ©2015Mirantis, Inc. All rights reserved Refine  the  UI  to  only  ask  for  needed input https://murano.readthedocs.org/en/stable-­‐kilo/articles/dynamic_ui.html “The  main  purpose   of  Dynamic  UI  is  to  generate  application  creation  forms  “on-­‐the-­‐fly”.   Murano dashboard  doesn’t   know  anything  about  what  applications  can  be  deployed  and   which  web  form  are  needed  to  create  application  instance.  So  all  application  definitions   should  contain  a  yaml file  which  tells  dashboard  how  to  create  an  application  and  what   validations  are  to  be  applied.”  
  • 37.
    Consumer  Uses  Cloud  Operator  Controlled UI/API