Download - Openstack Heat
Openstack Heat
Arun prasath SDec 23, 2014
What is Heat ?
Template-driven engine
that allows us to describe and
automate the deployment of
infrastructure
Use cases
• Infrastructure provisioning using templates
• Version controlling the infrastructure
• Auto scale feature
• Works well with configuration management tools
• Many PaaS applications
Orchestration in other platforms
• AWS – CloudFormation
• CloudStack templates
• Azure PowerShell cmdlets
• Eucalyptus - CloudFormation
Heat capabilities
• Provides ability to describe an infrastructure in text file.
• Infrastructure resources include – Servers, network,
router, floating IP, security groups
• We can also specify the relationship between the
resources
• Changes in infrastructure made easy
Heat Overview
Architecture• Heat project comprises of number of
python applicationso heat
o heat-api
o heat-api-cfn
o heat-engine
Architecture
Workflow
Implementation
• Create database for Heat
• Create Keystone users and roles
• Create services and endpoints
• Install necessary packages
Heat components
Stack
Resource
Resource
…
…
Network subnet
Router
Subnet – Router connection
Some other resources
…
Nested stack
HOT AnatomyParameters
User defined parameters passed into template from CLI or GUI
Parameters include type, description, default value, hidden, and constraints
Resources
Resources for Heat to Orchestrate
Consists of Type, Properties, DependsOn
Resources produce global attributes
Outputs
Displayed via CLI/GUI to identify important information of template
HOT Anatomy -Parameters
heat_template_version: 2013-05-23
parameters:
image:
type: string
description: Image to use for the instance to be created.
default: cirros0.3.2x86_64disk
constraints:
- allowed_values: ['cirros0.3.2x86_64disk','fedora20.x86_64']
volume_size:
type: number
description: Size of volume to attach to instance
default: 1
constraints:
- range: {min: 1, max: 10}
HOT Anatomy -Resources
heat_template_version: 2013-05-23
resources:
heat_network_01:
type: OS::Neutron::Net
properties:
admin_state_up: true
name: heat-network-01
heat_subnet_01:
type: OS::Neutron::Subnet
properties:
name: heat-subnet-01
cidr: 10.10.10.0/24
enable_dhcp: true
network_id: { get_resource: heat_network_01 }
HOT Anatomy - Outputoutputs:
instance_ip:
description: The IP address of the deployed Web application
value: { get_attr: [web-app-instance, show] }
Connection_details:
description: The IP address of the deployed Web application
value: { get_attr: [web-app-instance, addresses, public, 0] }
Hello Heatheat_template_version: 2013-05-23
resources:
compute_instance: # You can name this whatever you
prefer
type: "OS::Nova::Server"
properties:
flavor: 1GB Standard Instance
image: CentOS 6.5
name: My Compute Instance
Ways to run heat command
• By using python-heatclient
• By using Horizon
Input template
File
Direct text
URL
Nested stack example(my_nested.yaml)
heat_template_version: 2013-05-23
resources:
my_instance:
type: OS::Nova::Server
properties:
flavor: m1.small
image: my_image
(new_stack.yaml)
heat_template_version: 2013-05-23
resources:
my_nested:
type: my_nested.yaml
Provider resourcesNo hard-coded names/paths (in the template)
Staging workflow/testing much simplified
Allows deployer or user to define custom resource types
– /etc/heat/environment.d
– /etc/heat/templates
– Users heat stack-create –environment-file=foo.yaml
-Users can override default environment resources!
resource_registry:
"My::Custom::Server": server.yaml
Environmentsparameters:
key_name: mykey
resource_registry:
My::Custom::Server : my_server.yaml
OS::Nova::Server : override_nova.yaml
• python-heatclient resolves local files and URLs
• Files associated with environment are passed along with the stack-create/update API request
• heat stack-create mystack -f template.yaml –e environment.yaml
Provider Resource Example
(my_nested.yaml)
heat_template_version: 20130523
resources:
my_instance:
type: OS::Nova::Server
properties:
flavor: m1.small
image: my_image
(my_stack.yaml)
heat_template_version: 20130523
resources:
my_nested:
type: My::Custom::Server
(environment.yaml)
resource_registry:
My::Custom::Server: my_nested.yaml
Demo : Create an instance
Demo : Deploy a web server using HEAT
Troubleshooting
• Check if you can reach the endpoints
• heat template-validate
• heat template-show
• Check for resources
• Logs - /var/log/heat/*
Important links• http://docs.openstack.org/developer/heat/template_guide
/hot_guide.html
• http://docs.openstack.org/developer/heat/template_guide
/
• https://github.com/openstack/heat-templates
Questions ?