Diving Into Heat: Mirantis, 2013 Dina Belova
Diving Into Heat: Mirantis, 2013 Dina Belova
Diving Into Heat: Mirantis, 2013 Dina Belova
Heat
Dina Belova
Mirantis, 2013
What is Heat?
Orchestration service for OpenStack (officially
Autoscaling
HA mechanism for the different levels (services running
inside an instance, individual instances, stacks)
Nested stacks
Already in Heat
Nested stacks
High Availability (HA) for different resource levels
Associate users with templates using Keystone
Get boto (Python programming language
interface to Amazon Web Services) working with
Heat
API rework to align AWS specification
Heat
Heat API
Heat Engine
MQ
Watcher Task
Scaling Policy
CloudWatch
API
VM
VM
Stack
OpenStack
VM
DB
Heat API
heat-api (OpenStack native REST API) or heat-apicfn (provides AWS Query API)
Communicates with Heat Engine and tells it what
actions to do
Heat Engine
Does all the orchestration work
Layer on which resource integration is
implemented
Contains abstractions to use Auto Scaling and
High Availability
Installation
Heat + DevStack
Heat + Ubuntu
Heat + Fedora
Delete stack
heat stack-delete 70296f8e-f301-465f-8b42-1aa3f95c42f6
+--------------------------------------+------------+--------------------+----------------------+
| id
| stack_name | stack_status
| creation_time
|
+--------------------------------------+------------+--------------------+----------------------+
| 70296f8e-f301-465f-8b42-1aa3f95c42f6 | teststack | DELETE_IN_PROGRESS | 2013-05-29T07:38:11Z |
+--------------------------------------+------------+--------------------+----------------------+
Template structure
Description
Parameters
Mappings
Resources
Outputs
"Outputs" : {
set of outputs
}
Description
"Description" : "Template to test something important"
Parameters
"Parameters": {
"InstanceType" : {
"Description" : "Test instance type",
"Type" : "String",
"Default" : "m1.small",
"AllowedValues" : ["m1.small", "m1.medium"]
}
}
Mappings
"Mappings" : {
"AWSInstanceType2Arch" : {
"m1.tiny"
: { "Arch"
"m1.small"
: { "Arch"
"m1.medium" : { "Arch"
"m1.large"
: { "Arch"
"m1.xlarge" : { "Arch"
}
}
:
:
:
:
:
"32"
"64"
"64"
"64"
"64"
},
},
},
},
}
Resources
"Resources" : {
"network": {
"Type": "OS::Quantum::Net",
"Properties": {
"name": "the_network"
}
},
"unnamed_network": {
"Type": "OS::Quantum::Net"
},
}
Outputs
"Outputs" : {
"the_network_status" : {
"Value" : { "Fn::GetAtt" : [ "network", "status" ]},
"Description" : "Status of network"
},
"port_device_owner" : {
"Value" : { "Fn::GetAtt" : [ "port",
"device_owner"]},
"Description" : "Device owner of the port"
}
}
Useful links
http://docs.openstack.org/developer/heat/
https://wiki.openstack.org/wiki/Heat
https://github.com/openstack/heat
https://github.com/openstack/heat-templates