Model Driven Orchestration with TOSCA and ARIA 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