Hashicorp Configuration Language
Jump to navigation
Jump to search
External
Internal
Overview
Comments
# This is a comment
Block
Terraform Block
terraform {
required_version = ">= 0.12"
}
Resource Block
Declares a resource.
Data Block
Declares a data source.
data "data-source-name" "local-name" { ... }
data "aws_ami" "example" {
most_recent = true
owners = ["self", "0000000"]
filter {
name = "name"
values = ["consul-ubuntu-*"]
}
tags = {
Name = "app-server"
Tested = "true"
}
}
Module Block
Represents a module call.
Interpolation Expression
Input Variable
variable "region" {
description = "This is the region"
type = string
default = "us-east-1"
}
"default" may be "null"
variable "masters" {
description = "The number of master nodes"
type = number
default = 1
}
To use the variable:
region= var.region
This is also an interpolation expression, prefixed with “var.”
Variables can be assigned in multiples way, and this is the descending order of precedence:
- command-line flags (-var = ‘region=something’)
- from a file (.tfvars, -var-file=…) terraform.tfvars or *.auto.tfvars in the current directory are automatically loaded. Multiple -var-file can be used.
- From environment variables: TF_VAR_name. This can only be used for string variables.
- UI Input
- Variable defaults (“default” keyword).
Lists
variable "security_groups" {
description = "The list of security groups"
type = list
default = ["sg-041f9d51704199e98"]
}
Maps
Output Variable
Output variables are a way to organize data to be easily queried and shown back to the Terraform user. Terraform usually stores hundred or thousands of attribute values, but only a few of those are important. Output variables can be used as an input to other modules.
Also see: