Terraform Module Block Syntax
External
- https://www.terraform.io/docs/configuration/modules.html
- https://www.terraform.io/docs/modules/index.html
Internal
Overview
TODO: this section must be expanded based on https://www.terraform.io/docs/configuration/modules.html and https://www.terraform.io/docs/modules/index.html
After adding, removing, or modifying module
blocks, terraform init must be re-run to allow Terraform the opportunity to adjust the installed modules. By default this command will not upgrade an already-installed module; use the -upgrade option to instead upgrade to the newest available version.
Playground
Example
module "some-module" {
source = "terraform-aws-modules/eks/aws"
version = "~> 9.0"
cluster_name = local.cluster_name
vpc_id = var.aws_vpc_id
...
tags = {
Environment = var.environment_name
}
}
Arguments
source
The source
argument is required. It is a meta-argument defined by the Terraform CLI. Its value is either the path to the local directory that contains the dependency module's configuration files or a remote module source that Terraform should download and use. This value must be a literal string with no template sequences; arbitrary expressions are not allowed. For more details see:
How to Specify a Remote Module
The syntax specified below (no protocol qualifier) implies that the module path is relative to the Terraform Registry URL, specifically https://registry.terraform.io/v1/modules/. This is obvious if TF_LOG environment variable is set to TRACE.
module "..." {
source = "terraform-aws-modules/eks/aws"
...
}
version
Constraint on the dependency module version.