# Template

You put CloudFormation template files for stacks in the templates directory or its subdirectories.

For each stack, you specify the template file to use with the `template` property. It accepts a relative file path to the template file in the templates directory.

If you don't specify the template, Takomo looks for a template file using the relative file path to the current stack configuration file from the stacks directory.

{% hint style="info" %}
Takomo supports both of the standard CloudFormation template file formats, i.e., JSON and YAML.
{% endhint %}

#### Example

Say, we have the following project.

```bash
.
├─ stacks
│  └─ application.yml
└─ templates
   └─ application-template.yml
```

In **application.yml** stack configuration file you can define the `template` property like so:

{% code title="stacks/application.yml" %}

```yaml
template: application-template.yml
```

{% endcode %}

If you would omit the `template` property, Takomo would fallback to the default behaviour and look for a template file by name **application.yml** from the templates directory.

## Inline template body

You can also inline the template body in a stack configuration file.

#### Example

```yaml
template:
  inline: |
    Resources:
      VPC:
        Type: AWS::EC2::VPC
        Properties:
          CidrBlock: 10.0.0.0/16
  
```

## Disabling dynamic template

By default, Takomo processes each template file with [Handlebars](https://handlebarsjs.com/) templating engine. You can turn off this dynamic template processing by providing the template configuration with an object with two properties: `filename` and `dynamic`. The former specifies the relative file path to the template file in the templates directory., and the latter is an optional boolean to enable or disable dynamic processing.

#### Example

Use the object notation to disable dynamic template:

```yaml
template:
  filename: networking.yml
  dynamic: false
```

## Where to define

The `template` property can be defined only in stack configuration files.

## Requirements

The `template` property must satisfy these requirements:

* Must be a string or an object


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.takomo.io/stack-properties/template.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
