A blog to share security, networking and cloud related technology information as @vCloudernBeer picked up on his search for his destiny in the cloud. (LinkedIn: https://www.linkedin.com/in/chowanthony)

Monday, November 10, 2014

OpenStack Series: Part 10 – Heat – Orchestration Service

The Orchestration service provides a way to create and
manage cloud resources such as storage, networking, computer instances, or
applications with a template.

One important concept for Heat is that it is a declarative specification of application model. Puppet is a declarative language in which user specify the end state of the server or device that it manages. In the case of Heat it specifies the end state of the state and does not specify how to attend the end state.

Orchestration Service Components

heat - A CLI tool that communicates with the heat-api to execute AWS CloudFormation APIs

heat-api - An OpenStack-native ReST API that processes API request by sending them to the heat-engine over RPC

heat-api-cfn - Provides an AWS-Query API that is compatible with AWS CloudFormation and processes API request by sending them to the heat-engine over RPC

heat-engine - Orchestrates the launching of templates and provide events back to the API consumer.

From the components we can see that the heat-engine is the heart of the Orchestration Service in the sense that it launches the templates to create stacks (a collection of resources).

Another thing is that Heat is heavy related to Amazon Web Services CloudFormation. On the above service components there are 3 that are related to AWS -

heat-api-cfn,

api-heat-cloudwatch and

heat-cfntools.

Note: Cloudwatch is a AWS monitoring feature that is the counter part of OpenStack Ceilometer.

We need to look at templates and the 2 versions of APIs (OpenStack native and CloudFormation-compatible).

Heat Template
A template is how we want the OpenStack infrastructure should look like. Initially the format is compatible to AWS CloudFormation and HOT (Heat Orchestration Template) is to replace the CFN format to be the native format of Heat.

Heat template can be integrate with Configuration Management Tools such as Chef or Puppet.
Heat Template has the following structures:

Description

Parameters

Mappings

Resources

Outputs

Heat Engine
The Heat API is the vehicle from user to the Heat engine to perform orchestration task. There are 2 set of API - OpenStack native REST API and AWS Query API

When we think of orchestration, we think of the ability to provision a set of resources and in the case of OpenStack Heat - to provision a stack.

There is another notable feature in OpenStack Heat that is worth looking into. It is - AutoScaling

image source: https://wiki.openstack.org/w/images/2/2a/Current.png

With the alarm provided by the OpenStack Ceilometer, Heat template can be specified to auto scale up or scale down resources. Usually a load balancer is to be specified in the Heat template when autoscaling is configured.