Some documentation defines Heat as:
"A service to orchestrate multiple composite cloud applications using the .. _AWS CloudFormation: http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html?r=7078 template format, through both an OpenStack-native ReST API and a CloudFormation-compatible Query API."
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.
- api-heat-cloudwatch - Provides monitoring (metrics collection) for the Orchestration Service.
- heat-cfntools - A package of helper scripts (e.g. cfn-hup which handles updates to metadata and execute custom hooks).
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 -
- api-heat-cloudwatch and
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).
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:
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.
OpenStack Series Part 1: How do you look at OpenStack?
OpenStack Series Part 2: What's new in the Juno Release?
OpenStack Series Part 3: Keystone - Identity Service
OpenStack Series Part 4: Nova - Compute Service
OpenStack Series Part 5: Glance - Image Service
OpenStack Series Part 6: Cinder - Block Storage Service
OpenStack Series Part 7: Swift - Object Storage Service
OpenStack Series Part 8: Neutron - Networking Service
OpenStack Series Part 9: Horizon - a Web Based UI Service
OpenStack Series Part 11: Ceilometer - Monitoring and Metering Service
OpenStack Series Part 12: Trove - Database Service
OpenStack Series Part 13: Docker in OpenStack
OpenStack Series Part 14: Sahara - Data Processing Service
OpenStack Series part 15: Messaging and Queuing System in OpenStack
OpenStack Series Part 16: Ceph in OpenStack
OpenStack Series Part 17: Congress - Policy Service
OpenStack Series Part 18: Network Function Virtualization in OpenStack
OpenStack Series Part 19: Storage Polices for Object Storage
OpenStack Series Part 20: Group-based Policy for Neutron
"Deploying OpenStack: Learning Environments (Manual Setup)." Deploying OpenStack: Learning Environments (Manual Setup). N.p., n.d. Web. 26 Oct. 2014.
"OpenStack." Welcome to the Heat Developer Documentation! — Heat 2015.1.dev217.gd62e13d Documentation. N.p., n.d. Web. 26 Oct. 2014.