> For the complete documentation index, see [llms.txt](https://docs.duplocloud.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.duplocloud.com/docs/automation-platform/automation-and-tools/automation-stacks/customize-deploy-templates.md).

# Customize deploy templates

## Customizing deploy templates

### Disclaimer

These customization options are intended for advanced users familiar with JSON editing and deployment workflows. Improper modifications can break the template, potentially making it difficult to troubleshoot and restore. To avoid issues, always maintain a version history or backup of the original template before making changes. While some features, like adding custom input parameters, are straightforward and significantly enhance template utility, use caution when making complex edits.

### In-line editing of parameter fields

For example, you can use a different instance size for a node.

### Creating custom input parameters

Custom template input variables enhance template reusability by allowing dynamic values to be defined and inserted during use. To create a custom variable, wrap its name with double curly braces, like this: `{{My Parameter Name}}`. When the template is processed, you will be prompted to provide a value for each custom variable. This makes your templates more flexible and adaptable to different scenarios.

### Using substitution keys

Substitution keys are predefined strings that are automatically replaced with corresponding values during template processing. Unlike custom template parameters, substitution keys do not require wrapping with special characters like double curly braces and are not listed in the pop-up dialog for custom input parameters. They can be inserted directly into the JSON template and will resolve dynamically. Below is a list of available built-in substitution keys and their descriptions.

| Substitution Key            | Value                                                                                  |
| --------------------------- | -------------------------------------------------------------------------------------- |
| `ref.duplo!tenantid`        | Tenant ID                                                                              |
| `ref.duplo!tenantname`      | Tenant name                                                                            |
| `ref.duplo!tenantinfraname` | Infrastructure name                                                                    |
| `ref.duplo!tenantregion`    | Tenant region (e.g., us-east-1).                                                       |
| `ref.duplo!k8sclustername`  | K8s cluster name (the cluster deployed under the Tenant's Plan).                       |
| `ref.duplo!eksami`          | AWS AMI ID for the latest EKS Node Image compatible with the Tenant's cluster version. |
| `ref.duplo!dnssuffix`       | External DNS Suffix for the Tenant's Plan.                                             |

### Removing a resource

You can remove a resource from a deployment template to exclude it permanently. While this functions the same as unchecking a resource in the tree displayed just before deployment, the key difference is that the resource will no longer appear in the list at all.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.duplocloud.com/docs/automation-platform/automation-and-tools/automation-stacks/customize-deploy-templates.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
