Templatefile Function
In this chapter, we will learn the templatefile function in detail.
We'll cover the following
templatefile#
Sometimes we want to use a file but do not know all of the values before we run the project. Other times, the values are dynamic and generated as a result of a created resource. To use dynamic values in a file, we need to use the templatefile function.
The templatefile function allows us to define placeholders in a template file and then pass their
values at runtime.
Project example#
Let’s dive into a simple example to see how it works. Clicking the terminal will run terraform init and then terraform apply. When prompted, enter yes to run the project.
/
- main.tf
 
Code explanation#
Let’s walk through the code we have written so we can understand what is going on:
- 
We define a local (as we learned in the locals chapter) called
rendered. - 
We set the value of the local (remember a local can have a value that is an expression) to the result of calling the
templatefilefunction. - 
The template file function takes two arguments.
- 
The first argument is the path to the template file.
 - 
In this example, we are using the relative path between the
main.tfand the template fileexample.tpl, so the path is./example.tpl. - 
The next parameter is a set of variables that we want to replace in our template.
 - 
We pass in a value for a name (
kevin) and number (7).You could set the value of these variables to any expression such as another local or an attribute from a created resource or a data source.
 
 - 
 
- 
If you look at the example template code, you will see that we use the syntax
${<variable_name>}when we want to reference a passed-in variable.Terraform will replace
${name}in our template with the value passed in for the name, it will do the same with${number}. 
We then use an output to print the rendered value of the template out to the terminal. This
is an easy way for us to see how the templatefile function works.
Project output#
Let’s see templates in action. You will see the following output rendered:
You can see that Terraform replaced the placeholders in our template with the values that we provided to the templatefile function. Thus, we see the message with kevin and 7 in it rather than the placeholders.
📝Note: Once you are done with the project, do not forget to run
terraform destroyand then confirm with yes to delete all of the resources in this project.
