Hashicorp Configuration Language: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 25: Line 25:


Declares a [[Terraform Concepts#Data_Source|data source]].
Declares a [[Terraform Concepts#Data_Source|data source]].
data "''data-source-name''" "''local-name''" {
  ...
}


<syntaxhighlight lang='yaml'>
<syntaxhighlight lang='yaml'>

Revision as of 02:12, 14 November 2019

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

https://www.terraform.io/docs/configuration/variables.html
variable "region" {
  default = "us-east-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

https://learn.hashicorp.com/terraform/getting-started/variables#lists

Maps

https://learn.hashicorp.com/terraform/getting-started/variables#maps

Output Variable

https://www.terraform.io/docs/configuration/outputs.html
https://learn.hashicorp.com/terraform/getting-started/outputs

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:

terraform output