Model Driven Orchestration with TOSCA and Dawn of APIs

File Edit View Insert Slide Format Arrange Tools Table Help All changes saved in Drive

File

Edit View

Insert

Slide Format Arrange Tools Table Help All changes saved in Drive

Arial

DIGITAL BABYLON

A

Background...

Layout

Theme...

Transition...

The promise of TOSCA

Topology and Orchestration Specification for Cloud Applications TOSCA Descriptive Language Normative Types “tosca.nodes.compute”

Abstraction openstack.nodes.compute: Derived_from: tosca.nodes.compute Extensibility “aria.kubernetes.Microservice” Composition Imports: app-backend-blueprint.yaml TOSCA Descriptive Language

● Strict ○ Object-oriented, strictly typed, polymorphic ○ Rich set of base types (Simple Profile + Simple Profile for NFV) ○ Normative lifecycle (install, uninstall, start, stop) ● Agnostic ○ Not specific to any cloud provider (multi-VIM is hard) ○ Not specific to any machine technology (tosca.nodes.Compute = VM, container, cage, or…?) ○ Base types designed to be lowest-common denominators (politics) ○ Base types are optional ○ Support for generic workflows in TOSCA 1.1 Orchestration of APIs

App1 App2 Template YAML Artifact (Scripts,Images)

TOSCAPackage (*.CSAR) Implementation of TOSCA Open Source Open Governance Apache 2.0 License Apache Software Foundation ARIA’s Goal

BY 1. Simplify path to support TOSCA 10X ARIA’s Goal

1. Simplify BY path to support TOSCA 2. Simplify 10X creation of TOSCA applications ARIA’s Goal

1. Simplify path to support TOSCA 2. Simplify BY creation of TOSCA applications 3. Simplify 10X exploration of new models Project Principles

● Vendor Neutral ● Technology Independent ● Interoperability across orchestration vendors

Spec Uses ARIA for TOSCA orchestration TOSCA Spec Definition Definition

TOSCA Spec Implementation Uses ARIA for TOSCA orchestration Use Cases & Models

Uses ARIA for TOSCA orchestration

Others So, What is ARIA? What is ARIA?

1. Python LIBRARY for orchestration products to support 2. TOSCA SDK for TOSCA Profiles creating TOSCA applications

3. CLI TOOL to orchestrate TOSCA templates TOSCA App ARIA Command Line Interface Development CSAR Packager Guide

TOSCA Reference Example Templates

Graph TOSCA Simple Models Store Imperative Declarative Profile 1.0 Workflows Workflows

ARIA TOSCA App Artifacts Store

Developer SDK Built-in TOSCA for NFV Declarative Profile 1.0(csd03) Storage Driver (sqlalchemy) Workflows

ARIA Parser ARIA Store ARIA Workflow Engine

Execution IaaS SDN NFV Plugins Plugins Plugins Plugins

Architecture ARIA Plugins Declarative Model-Driven Orchestration Create /implementation/create

TOSCA Types /implementation/configure Tosca. Configure Nodes. Start /implementation/start ● Normative node types (Compute, Compute Stop /implementation/stop Network, etc’) Delete /implementation/delete ● Relationship types. Create /implementation/create Configure /implementation/configure ● Lifecycle operations and Tosca. Nodes. Start /implementation/start implementations WebApp Stop /implementation/stop (create, configure, start and others) Delete /implementation/delete ● ARIA supports custom types. Create /implementation/create Tosca. Configure /implementation/configure Nodes. Start /implementation/start Database Stop /implementation/stop Delete /implementation/delete

tosca_types.yaml C C

S S Tosca. Tosca. TOSCA Nodes. Nodes. Application WebApplication Con Database

C C Topology Tosca.Nodes.Compute S Tosca.Nodes.Compute S

tosca_app_template.yaml

● TOSCA Template describes the topology of the application. ● Topology templates use TOSCA node types describing the nodes and their relationships using normative and custom types. ● Templates can also define implementations for lifecycle operations. Declarative C C S S Tosca. Tosca. Nodes. Con Nodes. Model-Driven WebApplicatio Database n Orchestration C C Tosca.Nodes.Compute S Tosca.Nodes.Compute S tosca_app_template.yaml ● ARIA parses application template

Compute(WebApp) ● Normalizes the topology C C Compute(DB) Create Create ● Orchestration Graph is created ● A workflow mechanism loads the S Compute(WebApp) Start S Compute(DB) Start

orchestration graph and executes C WebApp Create C WebApp Create operations of the graph ● Deploy and Undeploy are common, S WebApp Start S WebApp Start other day 2 operations such as Heal Con WebApp ConnectTo Database are supported as well. ARIA Workflow Engine Plugins allow the introduction of new node types without modifying parser code

Deployment Graph TOSCA Application ARIA TOSCA Package Parser (*.CSAR) ARIA Plugins

Graph Based Workflows Embedded Python workflows allow Embedded dynamic interaction with the graph Imperative Workflows tosca_definitions_version: tosca_simple_yaml_1_0 node_types: web_server: Hello World Example derived_from: tosca.nodes.Root capabilities: host: type: tosca.capabilities.Container web_app: Configure scripts/configure.sh Tosca. derived_from: tosca.nodes.WebApplication Nodes. Start scripts/start.sh properties: web_app port: Stop scripts/stop.sh type: integer topology_template: node_templates: web_server: type: web_server web_app: type: web_app Tosca. properties: Nodes. port: 9090 web_server requirements: - host: web_server interfaces: Standard: configure: scripts/configure.sh start: scripts/start.sh # pip install git+https://github.com/apache/incubator-ariatosca.git stop: scripts/stop.sh # aria service-templates store helloworld.yaml hello # aria services create hello -t hello helloworld.yaml # aria executions start install -s hello https://github.com/apache/incubator-ariatosca/tree/m aster/examples/hello-world From topology template to a Service

Service Service template

web_server web_server Node Templates Nodes web_app aria web_app service-templates aria services create store host Web_server to web_app Requirement Relationships Templates

host Capability Configure Operations Templates Create Start Configure Operation Create Templates Start Install Workflow Breakdown

Install node sub-workflow Install node sub-workflow

Create Create Tosca. Tosca. Pre-configure Pre-configure Add Add Nodes. Configure Nodes. Configure scripts/configure.sh source target source target web_server web_app Start Start scripts/start.sh Configure Lifecycle DNS Service

Modelling Bind9 DNS Type: application.nodes.Bind9 Service Bind9_host with Type: openstack.nodes.Server OpenStack

Floating Security GW FW Keypair Port IP Group (YANG) Service Function Chaining with TOSCA

vDNS Blueprint

vFirewall Blueprint

vRouter Blueprint Network Service Join the community www.ARIATOSCA.org https://github.com/apache/incubator-ariatosca [email protected] tosca_definitions_version: tosca_simple_yaml_1_0 node_types: web_server: Hello World Example derived_from: tosca.nodes.Root capabilities: host: type: tosca.capabilities.Container web_app: Configure scripts/configure.sh Tosca. derived_from: tosca.nodes.WebApplication Nodes. Start scripts/start.sh properties: web_app port: Stop scripts/stop.sh type: integer topology_template: node_templates: web_server: type: web_server web_app: type: web_app Tosca. properties: Nodes. port: 9090 web_server requirements: - host: web_server interfaces: Standard: configure: scripts/configure.sh # pip install git+https://github.com/apache/incubator-ariatosca.git start: scripts/start.sh # aria service-templates store stop: scripts/stop.sh # aria services create -t helloworld.yaml https://github.com/apache/incubator-ariatosca/tree/m # aria executions start install -s aster/examples/hello-world