opentofu/docs/glossary.md
Andrei Ciobanu 934be4ad5e
Some checks are pending
build / Build for freebsd_386 (push) Waiting to run
build / Build for linux_386 (push) Waiting to run
build / Build for openbsd_386 (push) Waiting to run
build / Build for windows_386 (push) Waiting to run
build / Build for freebsd_amd64 (push) Waiting to run
build / Build for linux_amd64 (push) Waiting to run
build / Build for openbsd_amd64 (push) Waiting to run
build / Build for solaris_amd64 (push) Waiting to run
build / Build for windows_amd64 (push) Waiting to run
build / Build for freebsd_arm (push) Waiting to run
build / Build for linux_arm (push) Waiting to run
build / Build for linux_arm64 (push) Waiting to run
build / Build for darwin_amd64 (push) Waiting to run
build / Build for darwin_arm64 (push) Waiting to run
build / End-to-end Tests for linux_386 (push) Waiting to run
build / End-to-end Tests for windows_386 (push) Waiting to run
build / End-to-end Tests for darwin_amd64 (push) Waiting to run
build / End-to-end Tests for linux_amd64 (push) Waiting to run
build / End-to-end Tests for windows_amd64 (push) Waiting to run
Quick Checks / List files changed for pull request (push) Waiting to run
Quick Checks / Unit tests for linux_386 (push) Blocked by required conditions
Quick Checks / Unit tests for linux_amd64 (push) Blocked by required conditions
Quick Checks / Unit tests for windows_amd64 (push) Blocked by required conditions
Quick Checks / Unit tests for linux_arm (push) Blocked by required conditions
Quick Checks / Unit tests for darwin_arm64 (push) Blocked by required conditions
Quick Checks / Unit tests for linux_arm64 (push) Blocked by required conditions
Quick Checks / Race Tests (push) Blocked by required conditions
Quick Checks / End-to-end Tests (push) Blocked by required conditions
Quick Checks / Code Consistency Checks (push) Blocked by required conditions
Quick Checks / License Checks (push) Waiting to run
Website checks / List files changed for pull request (push) Waiting to run
Website checks / Build (push) Blocked by required conditions
Website checks / Test Installation Instructions (push) Blocked by required conditions
Glossary - initial version (#3411)
Signed-off-by: Andrei Ciobanu <andrei.ciobanu@opentofu.org>
2025-10-28 11:41:31 +02:00

4.7 KiB

OpenTofu glossary

This document is intended for anyone who wants to gain more knowledge about the terms and vocabulary used to talk about different concepts in OpenTofu.

Note

This was created with the intent of gathering more knowledge over time. The state that you find this in right now could be incomplete. Once you discover and learn about a new concept that would benefit others, feel free to open a PR to update this.

Note

When adding new content to this document, try to place it in such a way to match the alphabetical order of the already existing content.

Optionally, also add a reference link if possible (GitHub conversation, issue, other docs, etc).

OpenTofu

Attribute/argument/field

  • Attribute - a named key inside an object type.
  • Argument - a name used for an individual setting inside a configuration block.

It is recommended to avoid using popular programming language terms such as "field" or "property" to describe an element of an object in OpenTofu.

Reference: link

Data sources/data resource

  • Data source - the remote thing that the data resource reads from.
  • Data resource - refers to a block of type data, and the associated object it declares.
  • Data resource type - is what is represented by the first label in a data block header, and the associated declarations and code for it in the provider plugin.

Reference: link

Diagnostic

"Diagnostic" is the general term we use to describe the error or warning message that OpenTofu returns when there are problems with the configuration, or when interactions with external systems fail.

Reference: link

Mark/value mark

OpenTofu uses cty.Value to represent the result of expressions (and other data). Occasionally, we will want to annotate that data with additional properties, without actually modifying the underlying value. Marks are used for that purpose and are the preferred method of doing so with go-cty.

Resource/resource instance/resource type

  • Resource - is what is declared by a resource, data or ephemeral block.
  • Resource instance - is what such a block can declare zero or more of, when using the count, for_each, or enabled arguments.
  • Resource type - the type of a "resource". E.g., aws_instance is a "resource type".

It is recommended to use the following terms when discussing about "resource" blocks:

  • managed resource - a block declared as resource "type" "name" {}
  • data resource - a block declared as data "type" "name" {}
  • ephemeral resource - a block declared as ephemeral "type" "name" {}

Reference: link

Unknown value/Computed value

  • Unknown value - Unknown values are the result of expressions that have unknown inputs. E.g.: a value that will not be known until a resource is created. Right now the main source of this type of values is resources, but we are considering adding others like unknown inputs. Another place where an unknown value can be encountered is from using some of the built-in functions like timestamp, bcrypt and uuid.
  • Computed value - Computed is more of a resource specific concept that a provider can specify in its resource schema. When set to true, the provider does not expect a value and may instead produce one that may or may not be unknown. With other flags, the actual functionality is a bit more subtle.

References: link, link

HCL

Evaluation context (HCL)

A set of already known functions, input values, local values, resources, etc. that is used to evaluate an expression that can reference any of the concepts listed above.

The list of concepts above, in the context of HCL evaluation, are called variables.

Expression

An expression is any right hand side of an assignment that will be evaluated to generate the value that will be associated with key on the left hand side of the assignment. The simplest expressions are just literal values, like "hello" or 5, but the OpenTofu language also allows more complex expressions such as references to data exported by resources, arithmetic, conditional evaluation, and a number of built-in and provider-defined functions.

Reference: link

Variable (HCL)

Anything that's available to refer to in the current evaluation context.