14
FIWARE Blueprint capabilities and MURANO

FIWARE and MURANO. Support for configuration languages

Embed Size (px)

Citation preview

FIWARE Blueprint capabilities and MURANO

FIWARE Blueprint Templates

Hardware information Software

information

A tier: several VMs for scaling

Several applications in the same VMs

FIWARE: Complex software Configuration

- Application attributes value defined by users (haproxy port, mysql password, tomcat port..)- Application attribute values obtained in runtime (IP tomcat, IP mysql)- Hardware deployment depends of application attributes (e.g. tomcat port in security

groups)

Managing configuration in FIWARE (e.g. with Puppet)

• Separate software deployment instructions from node configuration – Puppet modules contains the software ideployment nstructions. The modules are

parametrized (no configuration infomration there)

– Puppet manifest specifies the VM configuration (software to be isntalled …)

– Puppet hieradata specifies the software attributes configuration

• VM configuration and software attributes should be generated in deployment time – Software attributes can be introduced by users (tomcat_port, mysql password)

– Ips are only know in deployment time

• Puppet master stores the nodes configuration and software instructions

Puppetmaster

Software instructions(modules)

VM 1

Software configuration

in VM1 (hieradata)

VM 1 configuration

(manifest)

VM software

instructions

Puppet

tomcat::tomcat_port : 8082tomcat::mysql_host : 10.0.2.3tomcat::mysql_user : roottomcat::mysql_password : mypasswordtomcat::mysql_password : mypasswordtomcat::application_url: [email protected]:telefonicaid/fiware-paas.git

hiera.yaml

Node default {class {‘tomcat::install': }class {‘git:install’:}

}

site.pp manifest

modules

Blueprint Components

6

PaaS Manager

Openstack SDC

-deploy VMs-deploy network-deploy storage?

Chef/serverPuppet Master

- Install software - Configuration Management

MURANO

MURANO fixes blueprint capabilities

• It deploys the virtual hardware (computation, network, security groups.. ) with Heat

• It contains an application catalogue with all the software deployment instructions

• MURANO agent in the VM installs software by the packages resources

– Murano packages includes software instructions and software configuration (security groups, ports..)

MURANO architecture

service{

"instance": {"flavor": "m1.medium","image": "clod-fedora-v3","?": {

"type": "io.murano.resources.Instance","id": "bce8308e-5938-408b-a27a-0d3f0a2c52eb"

},"name": "nhekhv6r7mhd4"

},"name": "sdf34sadf",

"?": {"_26411a1861294160833743e45d0eaad9": {"name": "Telnet"

},“type": "io.murano.apps.linux.Telnet","id": "190c8705-5784-4782-83d7-0ab55a1449aa"

}}

Like tiers?

Hardware information

Software to be installed?’

Software properties to be used in the installationinstructions?

https://github.com/stackforge/murano/blob/stable/juno/doc/source/specification/murano-api.rst

Murano Application

MURANO Packages

Installation and configurationinstructions

UI information in the applicationcatalogue

Application information (including secgroups)

https://github.com/murano-project/murano-app-incubator/tree/master/io.murano.apps.apache.Tomcathttps://wiki.openstack.org/wiki/Murano/Documentation/How_to_create_application_package

MURANO package classes: defines applicationworkflow

Deploy:Body:

- If: !yaql "not bool($.getAttr(deployed))"Then:

- $this.find(std:Environment).reporter.report($this, 'Creating VM for Tomcat ')- $securityGroupIngress:

- ToPort: 8082FromPort: 8082IpProtocol: tcpExternal: True

- $.environment.securityGroupManager.addGroupIngress($securityGroupIngress)- $.instance.deploy()- $resourcestomcat: new(sys:TomcatResources)# Deploy Apache Tomcat- $template: $ resourcestomcat.yaml('DeployTomcat.template')- $this.find(std:Environment).reporter.report($this, 'Instance is created. Deploying Tomcat')- $.instance.agent.call($template, $ resourcestomcat)- $this.find(std:Environment).reporter.report($this, 'Tomcat is installed')- $.setAttr(deployed, True)

# Deploy Git- $resourcesgit: new(sys:GitTomcatResources)- $template: $resourcesgit.yaml('DeployGit.template')- $this.find(std:Environment).reporter.report($this, “Deploying Git')-$.instance.agent.call($template, $resourcesgit)- $this.find(std:Environment).reporter.report($this, “Git is installed')- $.setAttr(deployed, True)

Hiera.yaml (software attributesconfiguration)

Site.pp (manifest with VM configuration)

Modules (tomcat module)

puppet apply "--hiera_config=hiera.yaml ","--modulepath=modules " site.pp

MURANO Resources using Puppet

Software Packages using Puppet in MURANO

• There a huge comunity (opscode, puppet lab) with software instructions

– Just reuse

• Package resources to execute chef/puppet instructions

• Package resources (puppet files: hiera.yaml and site.pp) should be defined in deployment time

– It depends on user definition and deployment properties

• Package classes depends on the deployment (e.g. security groups).

Generate application definitions based on packages with all the required files (hiera.yaml, site.pp) created on the fly packages from the user requirements specifying the workflow in the class (also generated)