Heat Template Tips
Heat templates are a way of defining sets of resources in the cloud. These templates can help you manage groups of servers, volumes, ssh keys, networks and more. These groups of resources are called a Stacks. For an overview and documentation on the template structure, you can visit the links below. To view/create your own Stacks follow this link.
List of Resource Types and Examples
The template generator does not generate valid templates. You can use it to help generate a skeleton for a template, but expect to have to go back through and fix mistakes in the resources' keys/values.
Tips
Intrinsic functions are a great way to make templates more flexible. Use them to get parameters set by users (get_param), reference other resources from the template (get_resource and get_attr), dynamically construct strings (str_replace) and more.
Provide instances with scripts that run on boot using the user_data key.
### Script with no dynamic string replacement ###
resources:
the_server:
type: OS::Nova::Server
properties:
# flavor, image etc
user_data: |
#!/bin/bash
echo "Running boot script"
# ...
###Takes user input for value of "foo" and uses that value as $FOO in the bootup script
parameters:
foo:
default: bar
resources:
the_server:
type: OS::Nova::Server
properties:
# flavor, image etc
user_data:
str_replace:
template: |
#!/bin/bash
echo "Running boot script with $FOO"
# ...
params:
$FOO: {get_param: foo}
To boot an instance from a volume or snapshot, used the block_device_mapping key and do not specify an image.
block_device_mapping: [{"snapshot_id": "snapshot-id-here", "device_name": "vda"}]
If you boot an instance from a snapshot this way, Heat will automatically create a volume from the snapshot and attach it to the instance. However, Heat will not automatically delete the volume when the stack is deleted. To get around this, you can define a volume in the template based on a snapshot and use that volume to boot the instance. This way, the volume is deleted with the rest of the resources when the stack is deleted.
Â