---
page_title: "helm: helm_template"
sidebar_current: "docs-helm-template"
description: |-

---
# Data Source: helm_template

Render chart templates locally.

`helm_template` renders chart templates locally and exposes the rendered manifests in the data source attributes. `helm_template` mimics the functionality of the `helm template` command.

The arguments aim to be identical to the `helm_release` resource.

For further details on the `helm template` command, refer to the [Helm documentation](https://helm.sh/docs/helm/helm_template/).

<!-- schema generated by tfplugindocs -->
## Schema

### Required

- `chart` (String) Chart name to be installed. A path may be used.
- `name` (String) Release name.

### Optional

- `api_versions` (List of String) Kubernetes api versions used for Capabilities.APIVersions
- `atomic` (Boolean) If set, installation process purges chart on fail. The wait flag will be set automatically if atomic is used. Defaults to `false`.
- `crds` (List of String) List of rendered CRDs from the chart.
- `create_namespace` (Boolean) Create the namespace if it does not exist. Defaults to `false`.
- `dependency_update` (Boolean) Run helm dependency update before installing the chart. Defaults to `false`.
- `description` (String) Add a custom description
- `devel` (Boolean) Use chart development versions, too. Equivalent to version '>0.0.0-0'. If `version` is set, this is ignored
- `disable_openapi_validation` (Boolean) If set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema.Defaults to `false`.
- `disable_webhooks` (Boolean) Prevent hooks from running.Defaults to `300` seconds.
- `include_crds` (Boolean) Include CRDs in the templated output
- `is_upgrade` (Boolean) Set .Release.IsUpgrade instead of .Release.IsInstall
- `keyring` (String) Location of public keys used for verification. Used only if `verify` is true. Defaults to `/.gnupg/pubring.gpg` in the location set by `home`.
- `kube_version` (String) Kubernetes version used for Capabilities.KubeVersion
- `manifest` (String) Concatenated rendered chart templates. This corresponds to the output of the `helm template` command.
- `manifests` (Map of String) Map of rendered chart templates indexed by the template name.
- `namespace` (String) Namespace to install the release into. Defaults to `default`.
- `notes` (String) Rendered notes if the chart contains a `NOTES.txt`.
- `pass_credentials` (Boolean) Pass credentials to all domains. Defaults to `false`.
- `postrender` (Block List, Max: 1) Postrender command configuration. (see [below for nested schema](#nestedblock--postrender))
- `render_subchart_notes` (Boolean) If set, render subchart notes along with the parent. Defaults to `true`.
- `replace` (Boolean) Re-use the given name, even if that name is already used. This is unsafe in production. Defaults to `false`.
- `repository` (String) Repository where to locate the requested chart. If is a URL the chart is installed without installing the repository.
- `repository_ca_file` (String) The Repositories CA File
- `repository_cert_file` (String) The repositories cert file
- `repository_key_file` (String) The repositories cert key file
- `repository_password` (String, Sensitive) Password for HTTP basic authentication
- `repository_username` (String) Username for HTTP basic authentication
- `reset_values` (Boolean) When upgrading, reset the values to the ones built into the chart.Defaults to `false`.
- `reuse_values` (Boolean) When upgrading, reuse the last release's values and merge in any overrides. If 'reset_values' is specified, this is ignored. Defaults to `false`.
- `set` (Block Set) Custom values to be merged with the values. (see [below for nested schema](#nestedblock--set))
- `set_list` (Block List) Custom list values to be merged with the values. (see [below for nested schema](#nestedblock--set_list))
- `set_sensitive` (Block Set) Custom sensitive values to be merged with the values. (see [below for nested schema](#nestedblock--set_sensitive))
- `set_string` (Block Set, Deprecated) Custom string values to be merged with the values. (see [below for nested schema](#nestedblock--set_string))
- `show_only` (List of String) Only show manifests rendered from the given templates
- `skip_crds` (Boolean) If set, no CRDs will be installed. By default, CRDs are installed if not already present. Defaults to `false`.
- `skip_tests` (Boolean) If set, tests will not be rendered. By default, tests are rendered. Defaults to `false`.
- `timeout` (Number) Time in seconds to wait for any individual kubernetes operation. Defaults to `300` seconds.
- `validate` (Boolean) Validate your manifests against the Kubernetes cluster you are currently pointing at. This is the same validation performed on an install
- `values` (List of String) List of values in raw yaml format to pass to helm.
- `verify` (Boolean) Verify the package before installing it.Defaults to `false`.
- `version` (String) Specify the exact chart version to install. If this is not specified, the latest version is installed.
- `wait` (Boolean) Will wait until all resources are in a ready state before marking the release as successful.Defaults to `true`.

### Read-Only

- `id` (String) The ID of this resource.

<a id="nestedblock--postrender"></a>
### Nested Schema for `postrender`

Required:

- `binary_path` (String) The command binary path.


<a id="nestedblock--set"></a>
### Nested Schema for `set`

Required:

- `name` (String)

Optional:

- `type` (String)
- `value` (String)


<a id="nestedblock--set_list"></a>
### Nested Schema for `set_list`

Required:

- `name` (String)
- `value` (List of String)


<a id="nestedblock--set_sensitive"></a>
### Nested Schema for `set_sensitive`

Required:

- `name` (String)
- `value` (String, Sensitive)

Optional:

- `type` (String)


<a id="nestedblock--set_string"></a>
### Nested Schema for `set_string`

Required:

- `name` (String)
- `value` (String)




## Example Usage

### Render all chart templates

The following example renders all templates of the `mariadb` chart of the official Helm stable repository. Concatenated manifests are exposed as output variable `mariadb_instance_manifest`.

```terraform
data "helm_template" "mariadb_instance" {
  name       = "mariadb-instance"
  namespace  = "default"
  repository = "https://charts.helm.sh/stable"

  chart   = "mariadb"
  version = "7.1.0"

  set = [
    {
      name  = "service.port"
      value = "13306"
    }
  ]

  set_sensitive = [
    {
      name  = "rootUser.password"
      value = "s3cr3t!"
    }
  ]
}


resource "local_file" "mariadb_manifests" {
  for_each = data.helm_template.mariadb_instance.manifests

  filename = "./${each.key}"
  content  = each.value
}

output "mariadb_instance_manifest" {
  value = data.helm_template.mariadb_instance.manifest
}

output "mariadb_instance_manifests" {
  value = data.helm_template.mariadb_instance.manifests
}

output "mariadb_instance_notes" {
  value = data.helm_template.mariadb_instance.notes
}
```

### Render selected chart templates

The following example renders only the templates `master-statefulset.yaml` and `master-svc.yaml` of the `mariadb` chart of the official Helm stable repository.

```terraform
data "helm_template" "mariadb_instance" {
  name       = "mariadb-instance"
  namespace  = "default"
  repository = "https://charts.helm.sh/stable"

  chart   = "mariadb"
  version = "7.1.0"

  show_only = [
    "templates/master-statefulset.yaml",
    "templates/master-svc.yaml",
  ]

  set = [
    {
      name  = "service.port"
      value = "13306"
    }
  ]

  set_sensitive = [
    {
      name  = "rootUser.password"
      value = "s3cr3t!"
    }
  ]
}


resource "local_file" "mariadb_manifests" {
  for_each = data.helm_template.mariadb_instance.manifests

  filename = "./${each.key}"
  content  = each.value
}

output "mariadb_instance_manifest" {
  value = data.helm_template.mariadb_instance.manifest
}

output "mariadb_instance_manifests" {
  value = data.helm_template.mariadb_instance.manifests
}

output "mariadb_instance_notes" {
  value = data.helm_template.mariadb_instance.notes
}
```

