deployment automation on openstack with tosca and cloudify
DESCRIPTION
TOSCA (Topology and Orchestration Specification for Cloud Applications) is an emerging standard for modeling complete application stacks and automating their deployment and management. It’s been discussed in the context of OpenStack for quite some time, mostly around Heat. In this slide deck discusses what TOSCA is all about, why it makes sense in the context of OpenStack, and how we can take it farther up the stack to handle complete applications, both during and after deployment, on top of OpenStack.TRANSCRIPT
Nati Shalom @natishalom
Deployment Automation on OpenStack with TOSCA and Cloudify
Uri Cohen @uri1803
What It Really Takes to
Deploy and Manage Apps
Provision
Install
Configure
Deploy
Monitor
Scale
Large Parts Are Mostly Manual
Real Time Analytics
Correlate with
Historical Events
Feedback
Execute Policy
Send Metrics
Setup Monitoring and Alerts
Deploy and Configure Applications
Setup Machine, Network, Storage
Push updates
Collect and Analyze Logs
Troubleshoot
Measure performance against expected SLA’s
Set and tune Alerts thresholds
Match Policy to Incident
The Impact of Human
Errors
80% of
outages impacting mission-critical services will be caused by people and process issues
50% of those outages will
be caused by change/configuration/release integration
and hand-off issues
The Cost of Downtime Up by 60%
61% ARE HERE
83%WANT TO BE HERE
TIME
EFFE
CTIV
ENE
SSThe Current Reality..
Challenges
•80% of outages impacting mission-critical services will be caused by people and process
•83% are facing
significant roadblock keeping them from moving to the next phase (Politics, Budget, Time, Stuff)
Solution: Automation & Orchestration
• Remove Manual Intervention out of the application deployment process
• Reduce Complexity and Dynamically align to the business needs
The Solution
Automating The Application Deployment
Deploy
Fail-over
Scale
Cloud Infrastructure
Intelligent OrchestrationHistorical data
Real Time Analytics Real Time Analytics
Correlate with
Historical Events
Feedback
Execute Policy
Send Metrics
TOSCA – The Glue for
Putting all This
Together
TOSCA
What is TOSCA?
• Topology & Orchestration Specification of Cloud Application
• By OASIS – Sponsored by IBM, CA, Rackspace, RedHat, Huawei and others
What is TOSCA?
• Goal: cross cloud, cross tools orchestration of applications on the Cloud
• Status: – Version 1 approved (XML ) – Version 2 (YAML!) in design
Why TOSCA?
• Standard• Can Describe– Any Topology– Any Automation
Process
• Portable between Clouds and Tools
The TOSCA Building Blocks
Application Topologies
Workflows
Policies
What do we see here?
What do we see here?
Host
Middleware
App module
connection
What We’ve Seen
• An application topology• 3 layers
– Infrastructure (Cloud or DC objects)– Platform or Middleware (App
containers)– Application modules, schemas and
configurations
• Relationships between components:– What’s hosted on what or installed
on what– What’s connected to what
What’s in a TOSCA
Topology?
• component in the topology are called Nodes
• Each Node has a Type (e.g. Host, BD, Web server). – The Type is abstract and hence
portable– The Type defines Properties and
Interfaces
• An Interface is a set of hooks (named Operations)
• Nodes are connected to one another using Relationships
Topology
Host Network RouterInfrastructure
Middleware Apache Tomcat MySQL
Application Mod_proxy WAR Schema
Types and Nodes
Node in Topology
Abstract Type
Instance of
Portable Blueprint Concrete Types
Concrete TypeImplements
Concrete Plugin
Uses
Lifecycle Interface
defines
Implements
Lifecycle:create:start:stop:delete:
Node Implementation
Instance of
Types and Nodes
Frontend_host
Host
Instance of
Portable Blueprint
OpenStack HostImplementing
Nova Plugin
Uses
Lifecycle Interface
defines
Implementing
Lifecycle:create: nova_provisioner.createstart: nova_provisioner.startstop: nova_provisioner.stopdelete: nova_provisioner.delete
Lifecycle:create:start:stop:delete:
Concrete Types
My_OpenStack_Host
Instance of
Relationships
Node in Topology
Node in Topology
Node in Topology
Connnected_to
Hosted_on RelationshipInterface
defines
source_interfaces: cloudify.interfaces.relationship_lifecycle: - preconfigure - postconfigure - establish - unlinktarget_interfaces: cloudify.interfaces.relationship_lifecycle: - preconfigure - postconfigure - establish - unlink
Relationships
Host Network
Tomcat
Connnected_to
Hosted_on RelationshipInterface
defines
source_interfaces: cloudify.interfaces.relationship_lifecycle: - preconfigure - postconfigure - establish - unlinktarget_interfaces: cloudify.interfaces.relationship_lifecycle: - preconfigure - postconfigure - establish - unlink
Translated to TOSCA
Node
Node
Node
Connected_to relationship
Hosted_onrelationship
Properties
Frontend_host
Host
Instance of
Portable Blueprint
OpenStack HostImplementing
Concrete Types
My_OpenStack_Host
Instance of
Memory Size
Memory size = 2GBImage_Id=1235
Propertiesschema
Property values
Generic Properties Schema
Image Id
Policies
• TOSCA 1.0 didn’t elaborate much on policies
• TOSCA 2.0 (draft) discusses specific DSL for specific policies such as SLA of a Node
• Out take:– Policies are imperative– Policies are NOT in YAML and are
tool dependent (we’re using Riemann.io)
Workflows
• TOSCA 1.0 – Workflows (Plans) are in any WF language. – Strong preference for BPMN 2.0
• TOSCA 2.0 – No change• Cloudify 3.0 take –
Workflows are also tool specific, currently we use Radial (Ruby based DSL) but seeking an alternative for future versions
Putting It All Together
• TOSCA Template (Blueprint in Cloudify) contains:– Application Topology• Nodes
– Interfaces– Properties– Artifacts (Plugins in Cloudify)
• Relationships– Interfaces
– Workflows– Policies
Portable Blueprint
Openstack_host type
Type implementation
Proxy
REST + File
Server
GUI
WorkflowEngine
Task Manager
Blueprint + RuntimeData
Policy Engine
Agent
Monitoring Data
Agent Monitoring Agent
ApplicationStack
Cloudify Manager
App VM
InvokesReportsCreates
Metrics VM
Logs + Events
Remote Agents
AgentAgent
Agent
Architecture
HOW IT FITS INTO THE OPENSTACK UNIVERSE
The AWS Stack
The OpenStack Equivalents
OpenShift/ CloudFoundry
**Solum**Heat Nova, Cinder,
Neutron etc..?
References
• OASIS TOSCA https://www.oasis-open.org/committees/tosca/
• TOSCA Session from the HK Summit https://wiki.openstack.org/w/images/a/a1/TOSCA_in_Heat_-_20130415.pdf
• Cloudify 3.0 (AKA Cosmo) on githubhttps://github.com/cloudifysource/cosmo-manager https://github.com/cloudifysource/cosmo-cli