OpenStack Heat Templating

Industrialize and orchestrate your infrastructure with code

OpenStack + Heat

 

 
OpenStack Heat is a new service available on OVH Public Cloud giving you the possibility to manage your infrastructure with code using declarative templates and move one step closer to the full automated architecture.
 
With Heat and its API, you can enter the Infrastructure as Code world:
  • By adding a clean and modern way to collaborate around infrastructure

    • Build around a simple language writable and readable by humans,

    • Encourage coding best practices (versioning, extensibility and modularity…)

  • By making your infrastructure directly reflect your business logic

    • Native resources group & relationship management
    • Automatization with respect of dependencies
  • By saving time from day one and simplify your ability to replicate
    • Variables and parameters ensuring both versatility and standardized environments

    • Deploy on multiple times on in different regions with a single file

Let's have a quick tour on how to start with Heat and see the possibilities you have.

Define your template

Create a YAML file.


heat_template_version: 2014-10-16
 
description: Simple template to deploy a single compute instance with an attached volume
 
  image_id:
    type: string
    description: Name of a cloud image in the catalog
    default: Debian 9
 
  size_gb:
    type: string
    description: Size of the volume
    default: 10
 
resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      key_name: key_name
      image: { get_param: image_id }
      flavor: c2-7
      networks:
        - network: Ext-Net
 
  my_volume:
    type: OS::Cinder::Volume
    properties:
      size: { get_param: size_gb }
 
  my_attachment:
      type: OS::Cinder::VolumeAttachment
      properties:
        instance_uuid:  { get_resource: my_instance }
        volume_id: { get_resource: my_volume }
        mountpoint: /dev/vdb

Start your stack

Use the OpenStack CLI to launch your stack using parameters.


$ openstack stack create -t parameter-template.yaml --parameter image_id="Centos 7"  --parameter size_gb=50 first-stack
+---------------------+-----------------------------------------------------------------------------+
| Field               | Value                                                                       |
+---------------------+-----------------------------------------------------------------------------+
| id                  | 35ba3489-f48f-47fc-a0ed-cf17ad302e9c                                        |
| stack_name          | first-stack                                                                |
| description         | Simple template to deploy a single compute instance with an attached volume |
| creation_time       | 2018-03-27T16:12:36Z                                                        |
| updated_time        | None                                                                        |
| stack_status        | CREATE_IN_PROGRESS                                                          |
| stack_status_reason | Stack CREATE started                                                        |
+---------------------+-----------------------------------------------------------------------------+

See the result and the logs


$ openstack stack list
+--------------------------------------+-------------+-----------------+----------------------+--------------+
| ID                                   | Stack Name  | Stack Status    | Creation Time        | Updated Time |
+--------------------------------------+-------------+-----------------+----------------------+--------------+
| 35ba3489-f48f-47fc-a0ed-cf17ad302e9c | first-stack | CREATE_COMPLETE | 2018-03-27T16:12:36Z | None         |
+--------------------------------------+-------------+-----------------+----------------------+--------------+

$ openstack stack event list first-stack
2018-03-27 16:12:38Z [first-stack]: CREATE_IN_PROGRESS  Stack CREATE started
2018-03-27 16:12:38Z [first-stack.my_instance]: CREATE_IN_PROGRESS  state changed
2018-03-27 16:12:39Z [first-stack.my_volume]: CREATE_IN_PROGRESS  state changed
2018-03-27 16:12:41Z [first-stack.my_volume]: CREATE_COMPLETE  state changed
2018-03-27 16:13:00Z [first-stack.my_instance]: CREATE_COMPLETE  state changed
2018-03-27 16:13:00Z [first-stack.my_attachment]: CREATE_IN_PROGRESS  state changed
2018-03-27 16:13:04Z [first-stack.my_attachment]: CREATE_COMPLETE  state changed
2018-03-27 16:13:04Z [first-stack]: CREATE_COMPLETE  Stack CREATE completed successfully

Information
Service OpenStack Heat
API version v1
File format Heat Orchestration Templating (HOT), AWS CloudFormation (CFN)
Region All Newton regions

Documentation

We wrote documentation to show you how to use Heat Templating.
  • The very basic stack management (FR, EN)
  • Managing parameters for multiple deployments (FR, EN)
  • Stay tuned...

FAQ

You will pay the resources orchestrated by Heat but you won't be charged for Heat itself. For example if you create an instance and a volume in a HOT file, you'll pay for the instance and the volume and that's it. Heat doesn't add any overcharge.

During the beta, Heat is available in Newton regions. This allow you to orchestrate multi-region architectures.

OVH will share more documentation and tutorials during the beta. You can start using the official Heat documentation and the template guide.

OVH is working on the autoscaling feature. Heat can handle the OS::Heat::AutoScalingGroup resources right now but the metrics and trigger systems are not available yet. That means you can manually trigger your autoscaling group but there is no integrated automatic solution on the OVH infrastructure side for now. Stay tuned!

Status

  • ALPHA
  • BETA
  • GAMMA