# Heat Simple Stack

Source: https://docs.quake.ai/resources/iac-templates/heat-simple-stack
Markdown: https://docs.quake.ai/resources/iac-templates/heat-simple-stack.md

---

# Heat simple stack


Heat is a legacy orchestration path. For new infrastructure, use the [Simple VM](/resources/iac-templates/simple-vm) OpenTofu template instead.


This pattern composes Compute and Network.

<PricingCompanion templateSlug="heat-simple-stack" />

## What this template does

Provisions a single compute instance using an OpenStack Heat Orchestration Template (HOT):

- Private network, subnet, and a router to the external network
- Security group allowing SSH and HTTP
- A volume-backed compute instance (boots from a volume, so it works with zero-disk flavors)
- Cloud-init user data that installs Nginx and serves a placeholder page ([configure with cloud-init](/docs/compute/how-to/configure-vm-cloud-init))
- A floating IP for public access
- Demonstrates the HOT template format as an alternative to OpenTofu/Terraform

This is the Heat equivalent of the [Simple VM](/resources/iac-templates/simple-vm) OpenTofu template, provided for teams already using the Heat orchestration engine.


Creating a stack from the CLI requires an unrestricted application credential, because Heat creates a Keystone trust to manage the stack's resources. A restricted application credential returns `ERROR: Internal Error`. See [Create a Heat stack](/docs/automation/how-to/create-heat-stack) for the credential setup.


## Parameters

| Parameter | Description | Default |
| --- | --- | --- |
| `flavor` | Instance size | `s1a.small` |
| `image` | Operating system image | `Ubuntu-24.04` |
| `key_name` | SSH keypair name | No default |
| `external_network` | External network for the router gateway and floating IP | `PublicStatic` |
| `private_cidr` | CIDR for the private subnet | `192.168.60.0/24` |

## When to use this pattern

Legacy Heat path for a single VM on a private network. For new deployments, use the [Simple VM with Floating IP](/resources/iac-templates/simple-vm) OpenTofu pattern instead.

## Template source

<TemplateSource slug="heat-simple-stack" />

<TemplateResourceMap template="heat-simple-stack" format="heat" />

## Customize this pattern

Provision and size the underlying VM with the OpenTofu customize how-tos on [Simple VM with Floating IP](/resources/iac-templates/simple-vm):

- [Customize a template's image and flavor](/docs/automation/how-to/customize-template-image-flavor)
- [Add a block volume to a template](/docs/automation/how-to/add-volume-to-template)
- [Parameterize a template with a tfvars file](/docs/automation/how-to/parameterize-template-tfvars)

## See also

- [Create a Heat Stack](/docs/automation/how-to/create-heat-stack)
- [Simple VM template (OpenTofu)](/resources/iac-templates/simple-vm)
- [Deploy the Heat Simple Stack template with the OpenStack CLI](/resources/deployments/deploy-heat-simple-stack-template)
