Terraform

Terraform is a declarative language and toolchain to provision infrastructure as code.

There are Terraform tools that execute build / change / destroy tasks against different infrastructure such as AWS or Github, but it's also a configuration language that you can use to express your infrastructure.

Files are saved with the extension .tf and often come with blocks. These blocks can be Resources, Providers, Modules or Data.

A Resource is the most important element in the Terraform language. Each resource block describes one or more infrastructure objects, such as virtual networks, compute instances, or higher-level components such as DNS records.

While resources are the primary construct in the Terraform language, the behaviors of resources rely on their associated resource types, and these types are defined by providers.

A module is a container for multiple resources that are used together.

Data sources represented by data blocks allow data to be fetched or computed for use elsewhere in Terraform configuration. Use of data sources allows a Terraform configuration to make use of information defined outside of Terraform, or defined by another separate Terraform configuration.