59 lines
1.2 KiB
Markdown
59 lines
1.2 KiB
Markdown
---
|
|
layout: "template"
|
|
page_title: "Provider: Template"
|
|
sidebar_current: "docs-template-index"
|
|
description: |-
|
|
The Template provider is used to template strings for other Terraform resources.
|
|
---
|
|
|
|
# Template Provider
|
|
|
|
The template provider exposes data sources to use templates to generate
|
|
strings for other Terraform resources or outputs.
|
|
|
|
Use the navigation to the left to read about the available data sources.
|
|
|
|
## Example Usage
|
|
|
|
```hcl
|
|
# Template for initial configuration bash script
|
|
data "template_file" "init" {
|
|
template = "${file("init.tpl")}"
|
|
|
|
vars {
|
|
consul_address = "${aws_instance.consul.private_ip}"
|
|
}
|
|
}
|
|
|
|
# Create a web server
|
|
resource "aws_instance" "web" {
|
|
# ...
|
|
|
|
user_data = "${data.template_file.init.rendered}"
|
|
}
|
|
```
|
|
|
|
Or using an inline template:
|
|
|
|
```hcl
|
|
# Template for initial configuration bash script
|
|
data "template_file" "init" {
|
|
template = "$${consul_address}:1234"
|
|
|
|
vars {
|
|
consul_address = "${aws_instance.consul.private_ip}"
|
|
}
|
|
}
|
|
|
|
# Create a web server
|
|
resource "aws_instance" "web" {
|
|
# ...
|
|
|
|
user_data = "${data.template_file.init.rendered}"
|
|
}
|
|
```
|
|
|
|
-> **Note:** Inline templates must escape their interpolations (as seen
|
|
by the double `$` above). Unescaped interpolations will be processed
|
|
_before_ the template.
|