Terraform modules

From wikinotes

A terraform module is a collection of *.tf files within a specific directory.
A root module is defined at the root of your project.

Input Variables


Input variables expose optional configuration to the commandline interface.
They are defined in the root module, within variable blocks.

variable "image_id" {
  type = string

variable "availability_zone_names" {
  type    = list(string)
  default = ["us-west-1a"]

Modify variables on CLI

terraform apply -var="image_id=foobar"


You can assign validators to input variables.

variable "image_id" {
  type        = string
  description = "The id of the machine image (AMI) to use for the server."

  validation {
    condition     = length(var.image_id) > 4 && substr(var.image_id, 0, 4) == "ami-"
    error_message = "The image_id value must be a valid AMI id, starting with \"ami-\"."