2014-07-28 19:43:00 +02:00
|
|
|
---
|
|
|
|
layout: "docs"
|
|
|
|
page_title: "Overrides"
|
|
|
|
sidebar_current: "docs-config-override"
|
|
|
|
---
|
|
|
|
|
|
|
|
# Overrides
|
|
|
|
|
|
|
|
Terraform loads all configuration files within a directory and
|
|
|
|
appends them together. Terraform also has a concept of _overrides_,
|
|
|
|
a way to create files that are loaded last and _merged_ into your
|
|
|
|
configuration, rather than appended.
|
|
|
|
|
|
|
|
Overrides have a few use cases:
|
|
|
|
|
|
|
|
* Machines (tools) can create overrides to modify Terraform
|
|
|
|
behavior without having to edit the Terraform configuration
|
|
|
|
tailored to human readability.
|
|
|
|
|
|
|
|
* Temporary modifications can be made to Terraform configurations
|
|
|
|
without having to modify the configuration itself.
|
|
|
|
|
|
|
|
Overrides names must be `override` or end in `_override`, excluding
|
|
|
|
the extension. Examples of valid override files are `override.tf`,
|
|
|
|
`override.tf.json`, `temp_override.tf`.
|
|
|
|
|
|
|
|
Override files are loaded last in alphabetical order.
|
|
|
|
|
|
|
|
Override files can be in Terraform syntax or JSON, just like non-override
|
|
|
|
Terraform configurations.
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
If you have a Terraform configuration `example.tf` with the contents:
|
|
|
|
|
|
|
|
```
|
|
|
|
resource "aws_instance" "web" {
|
|
|
|
ami = "ami-1234567"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
And you created a file `override.tf` with the contents:
|
|
|
|
|
|
|
|
```
|
|
|
|
resource "aws_instance" "web" {
|
|
|
|
ami = "foo"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Then the AMI for the one resource will be replaced with "foo". Note
|
|
|
|
that the override syntax can be Terraform syntax or JSON. You can
|
|
|
|
mix and match syntaxes without issue.
|