0
0
Terraformcloud~10 mins

File functions (file, templatefile) in Terraform - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - File functions (file, templatefile)
Start Terraform config
Call file() function
Read file content as string
Call templatefile() function
Read template file
Replace placeholders with variables
Return final string
Use string in resource or output
Terraform reads a file as a string with file(), or reads a template file and replaces variables with templatefile(), then uses the result in configuration.
Execution Sample
Terraform
locals {
  content = file("example.txt")
  message = templatefile("greeting.tpl", { name = "Alice" })
}
Reads a text file into 'content' and processes a template file replacing 'name' with 'Alice' into 'message'.
Process Table
StepFunction CalledInputActionOutput
1file()"example.txt"Reads entire file content as string"Hello from example.txt\n"
2templatefile()"greeting.tpl", {name="Alice"}Reads template and replaces ${name} with 'Alice'"Hello, Alice! Welcome!\n"
3Use outputslocals.content, locals.messageAssigns strings to variables for later useVariables hold file content and rendered template
💡 All file reads complete, variables hold final string values for use in Terraform
Status Tracker
VariableStartAfter file()After templatefile()Final
locals.content"""Hello from example.txt\n""Hello from example.txt\n""Hello from example.txt\n"
locals.message"""""Hello, Alice! Welcome!\n""Hello, Alice! Welcome!\n"
Key Moments - 3 Insights
Why does file() return the whole file content as one string?
Because file() reads the entire file as plain text without processing, as shown in step 1 of the execution_table.
How does templatefile() replace variables inside the template?
templatefile() reads the template and substitutes placeholders like ${name} with provided values, as shown in step 2 of the execution_table.
Can file() process variables inside the file content?
No, file() only reads raw text. To process variables, use templatefile(), as shown by the difference between steps 1 and 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output of file() at step 1?
A"Hello, Alice! Welcome!\n"
B"Hello from example.txt\n"
C"${name}"
D""
💡 Hint
Check the Output column in row with Step 1 in execution_table
At which step does templatefile() replace variables in the template?
AStep 2
BStep 1
CStep 3
DNo replacement occurs
💡 Hint
Look at the Function Called and Action columns in execution_table
If you want to read a file without variable substitution, which function should you use?
Atemplatefile()
Bjsondecode()
Cfile()
Dterraform()
💡 Hint
Refer to key_moments where file() reads raw text without processing
Concept Snapshot
file(path) reads entire file content as a string
templatefile(path, vars) reads a template file and replaces placeholders with vars
Use file() for raw text, templatefile() for variable substitution
Both return strings usable in Terraform configs
Files must exist and be readable for success
Full Transcript
This visual execution shows how Terraform's file() function reads a file's full content as a string, while templatefile() reads a template file and replaces variables inside it. First, file() reads example.txt and returns its text. Then, templatefile() reads greeting.tpl and replaces the placeholder ${name} with 'Alice'. The results are stored in local variables for use in Terraform resources or outputs. file() returns raw text without changes, while templatefile() processes variables. This helps beginners understand when to use each function and how Terraform handles file content.