2014-07-28 19:43:00 +02:00
---
layout: "docs"
page_title: "Configuring Variables"
sidebar_current: "docs-config-variables"
2014-10-22 05:21:56 +02:00
description: |-
Variables define the parameterization of Terraform configurations. Variables can be overridden via the CLI. Variable usage is covered in more detail in the getting started guide. This page covers configuration syntax for variables.
2014-07-28 19:43:00 +02:00
---
# Variable Configuration
Variables define the parameterization of Terraform configurations.
Variables can be overridden via the CLI. Variable usage is
covered in more detail in the
[getting started guide ](/intro/getting-started/variables.html ).
This page covers configuration syntax for variables.
This page assumes you're familiar with the
[configuration syntax ](/docs/configuration/syntax.html )
already.
## Example
A variable configuration looks like the following:
```
variable "key" {}
variable "images" {
default = {
2014-08-28 18:17:27 +02:00
us-east-1 = "image-1234"
us-west-2 = "image-4567"
2014-07-28 19:43:00 +02:00
}
}
```
2014-08-07 09:19:56 +02:00
## Description
2014-07-28 19:43:00 +02:00
The `variable` block configures a single input variable for
a Terraform configuration. Multiple variables blocks can be used to
add multiple variables.
The `NAME` given to the variable block is the name used to
set the variable via the CLI as well as reference the variable
throughout the Terraform configuration.
Within the block (the `{ }` ) is configuration for the variable.
These are the parameters that can be set:
* `default` (optional) - If set, this sets a default value
for the variable. If this isn't set, the variable is required
and Terraform will error if not set. The default value can be
a string or a mapping. This is covered in more detail below.
* `description` (optional) - A human-friendly description for
the variable. This is primarily for documentation for users
using your Terraform configuration. A future version of Terraform
will expose these descriptions as part of some Terraform CLI
command.
------
**Default values** can be either strings or maps. If a default
value is omitted and the variable is required, the value assigned
via the CLI must be a string.
String values are simple and represent a basic key to value
mapping where the key is the variable name. An example is:
```
variable "key" {
default = "value"
}
```
A map allows a key to contain a lookup table. This is useful
for some values that change depending on some external pivot.
A common use case for this is mapping cloud images to regions.
An example:
```
variable "images" {
default = {
2014-08-31 01:20:45 +02:00
us-east-1 = "image-1234"
us-west-2 = "image-4567"
2014-07-28 19:43:00 +02:00
}
}
```
The usage of maps, strings, etc. is documented fully in the
[interpolation syntax ](/docs/configuration/interpolation.html )
page.
## Syntax
The full syntax is:
```
variable NAME {
[default = DEFAULT]
[description = DESCRIPTION]
}
```
where `DEFAULT` is:
```
VALUE
{
2014-08-31 01:20:45 +02:00
KEY = VALUE
2014-07-28 19:43:00 +02:00
...
}
```