--- page_title: Syntax - 0.11 Configuration Language 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](/language/syntax/configuration). 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](/language/configuration-0-11/interpolation). - Multiline strings can use shell-style "here doc" syntax, with the string starting with a marker like `<