--- layout: "language" page_title: "Syntax - 0.11 Configuration Language" sidebar_current: "docs-conf-old-syntax" description: |- The syntax of Terraform configurations is custom. It is meant to strike a balance between human readable and editable as well as being machine-friendly. For machine-friendliness, Terraform can also read JSON configurations. For general Terraform configurations, however, we recommend using the Terraform syntax. --- # Configuration Syntax -> **Note:** This page is about Terraform 0.11 and earlier. For Terraform 0.12 and later, see [Configuration Language: Syntax](/docs/language/syntax/configuration.html). The syntax of Terraform configurations is called [HashiCorp Configuration Language (HCL)](https://github.com/hashicorp/hcl). It is meant to strike a balance between human readable and editable as well as being machine-friendly. For machine-friendliness, Terraform can also read JSON configurations. For general Terraform configurations, however, we recommend using the HCL Terraform syntax. ## Terraform Syntax Here is an example of Terraform's HCL syntax: ```hcl # An AMI variable "ami" { description = "the AMI to use" } /* A multi line comment. */ resource "aws_instance" "web" { ami = "${var.ami}" count = 2 source_dest_check = false connection { user = "root" } } ``` Basic bullet point reference: * Single line comments start with `#` * Multi-line comments are wrapped with `/*` and `*/` * Values are assigned with the syntax of `key = value` (whitespace doesn't matter). The value can be any primitive (string, number, boolean), a list, or a map. * Strings are in double-quotes. * Strings can interpolate other values using syntax wrapped in `${}`, such as `${var.foo}`. The full syntax for interpolation is [documented here](./interpolation.html). * Multiline strings can use shell-style "here doc" syntax, with the string starting with a marker like `<