Hashicorp Configuration Language: Difference between revisions
Jump to navigation
Jump to search
Line 146: | Line 146: | ||
====cidrsubnet==== | ====cidrsubnet==== | ||
{{External|https://www.terraform.io/docs/configuration/functions/cidrsubnet.html}} | {{External|https://www.terraform.io/docs/configuration/functions/cidrsubnet.html}} | ||
The following turns "10.10.0.0/16" into its first /24 subnet "10.10.1.0/24" | |||
<syntaxhighlight lang='text'> | <syntaxhighlight lang='text'> | ||
... | ... | ||
cidr_block = "${ | cidr_block = "${cidrsubnet("${var.vpc_cidr_block}", 8, 1)}" | ||
... | ... | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 00:00, 16 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.
References to Named Values or Interpolation Expression
Resource elements can be used by other resources via interpolation expressions:
resource "aws_subnet" "something" {
vpc_id = "${aws_vpc.main.id}"
...
}
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
}
Variables can be used via interpolation expression, prefixed with “var.”
To use the variable:
...
Name = "${var.playground_name}-playground-vpc"
...
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-a41f9d51704199e97"]
}
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:
Functions
Function Categories
String
substr
...
cidr_block = "${substr("${var.my_cidr_block}", 0, 5)}.1.0/24"
...
IP Network
cidrsubnet
The following turns "10.10.0.0/16" into its first /24 subnet "10.10.1.0/24"
...
cidr_block = "${cidrsubnet("${var.vpc_cidr_block}", 8, 1)}"
...