Glossary
A quick-reference glossary of key Terraform terms and concepts covered in this workshop.
Backend
Section titled “Backend”A backend defines where Terraform stores its state data. By default, Terraform uses a local backend, but remote backends like S3 enable team collaboration and state locking.
Data Sources
Section titled “Data Sources”Data sources allow Terraform to query and use information defined outside your configuration, such as existing AWS resources or AMI IDs.
depends_on
Section titled “depends_on”A meta-argument that explicitly declares a dependency between resources when Terraform cannot automatically infer the correct ordering.
Dynamic Blocks
Section titled “Dynamic Blocks”Dynamic blocks generate repeated nested blocks programmatically from a collection, replacing hand-written duplicates with a for_each-driven template. They are commonly used for patterns like security group rules, where the number of nested blocks is determined by a variable.
Ephemeral Values
Section titled “Ephemeral Values”Ephemeral values exist only for the duration of a Terraform operation and are never persisted to state or plan files. Introduced in Terraform 1.10, they allow variables, outputs, and resources to handle secrets without writing sensitive data to disk, closing the gap that sensitive = true leaves open.
Expressions
Section titled “Expressions”Expressions are used to reference or compute values within a Terraform configuration, including conditionals, for expressions, and string interpolation.
HashiCorp Configuration Language (HCL) is the declarative language used to write Terraform configurations, designed to be both human-readable and machine-friendly.
Lifecycle
Section titled “Lifecycle”A nested block inside a resource that customises how Terraform creates, updates, or destroys that resource, with options like create_before_destroy and ignore_changes.
Locals
Section titled “Locals”Locals are named values defined within a module that simplify expressions and avoid repeating the same value or calculation throughout your configuration.
Meta Arguments
Section titled “Meta Arguments”Special arguments like count and for_each that can be added to any resource or module block to control how many instances Terraform creates.
Learn more — count · Learn more — for_each
Module
Section titled “Module”A module is a reusable container for multiple resources that are used together, allowing you to organise, encapsulate, and share infrastructure configurations.
Output
Section titled “Output”Output values expose information about your infrastructure after a Terraform apply, making it available to other configurations or for display in the terminal.
Preconditions / Postconditions
Section titled “Preconditions / Postconditions”Preconditions and postconditions are validation rules you attach to resources, data sources, or outputs. A precondition checks assumptions before Terraform applies a change, while a postcondition verifies guarantees after the change is applied, giving you early and explicit error messages instead of cryptic provider failures.
Provider
Section titled “Provider”A provider is a plugin that lets Terraform interact with a specific platform or service, such as AWS, Azure, or Google Cloud.
Provider — AWS
Section titled “Provider — AWS”The AWS provider allows Terraform to manage Amazon Web Services resources such as EC2 instances, S3 buckets, and IAM roles.
Provider-Defined Functions
Section titled “Provider-Defined Functions”Provider-defined functions are custom functions supplied by a Terraform provider that you can call in your configurations using the provider::name::function syntax. They extend the built-in function library with provider-specific logic, such as ARN parsing or policy generation, without requiring external scripts.
removed block
Section titled “removed block”The removed block lets you drop a resource from Terraform state without destroying the real infrastructure. It is useful when you want to stop managing a resource with Terraform but keep it running, or when refactoring configurations to move resources between modules.
Resource
Section titled “Resource”A resource is the most fundamental building block in Terraform, representing a single piece of infrastructure such as a virtual machine, DNS record, or S3 bucket.
State is the file Terraform uses to map your configuration to real-world resources, track metadata, and determine what changes need to be applied.
Terraform AWS Modules
Section titled “Terraform AWS Modules”A collection of community-maintained, production-ready Terraform modules for provisioning common AWS infrastructure patterns like VPCs, EKS clusters, and RDS databases.
terraform_data
Section titled “terraform_data”The terraform_data managed resource stores arbitrary values in Terraform state and can trigger re-provisioning of other resources through its triggers_replace argument. It replaces the older null_resource pattern with a built-in resource that requires no external provider.
Variable
Section titled “Variable”Input variables let you parameterise your Terraform configurations so that values like region, instance type, or environment can be set at runtime.
Workspace
Section titled “Workspace”Workspaces allow you to manage multiple distinct sets of infrastructure state within a single Terraform configuration, useful for separating environments like dev and prod.