Terraform | |
---|---|
![]() | |
Original author(s) | Mitchell Hashimoto et al. |
Developer(s) | HashiCorp |
Initial release | 28 July 2014 |
Stable release | v1.12.1 / 21 May 2025 [1] |
Repository | |
Written in | Go |
Operating system | Linux, FreeBSD, macOS, OpenBSD, Solaris, and Microsoft Windows |
Available in | English |
Type | Infrastructure as code |
License | Business Source License v1.1 [2] (source-available) |
Website | www![]() |
Terraform is an infrastructure-as-code software tool created by HashiCorp. Users define and provide data center infrastructure using a declarative configuration language known as HashiCorp Configuration Language (HCL), or optionally JSON. [3]
Terraform was launched by HashiCorp in 2014. [4] HashiCorp launched the Terraform Module Registry in 2017. [5] In 2019, the paid version Terraform Enterprise was introduced. [6]
In September 2021, HashiCorp announced it would be temporarily pausing its review of community-submitted pull requests for Terraform, citing low staffing in its Terraform Core team. [7]
On August 10, 2023, HashiCorp announced that all products produced by the company would be relicensed under the Business Source License (BUSL), with HashiCorp prohibiting commercial use of the community edition by those who offer "competitive services". Terraform was previously free software available under version 2.0 of the Mozilla Public License (MPL). [8] [9] Joe Duffy, founder and CEO of Pulumi, criticized the announcement as "disingenuous" and said, "We tried many times to contribute upstream fixes to Terraform providers, but HashiCorp would never accept them. So we've had to maintain forks." [8]
In August 2023, OpenTF was created as a fork resulting from the HashiCorp changing the Terraform license to a BSL. OpenTF was later renamed to OpenTofu. [10]
Terraform manages external resources (such as public cloud infrastructure, private cloud infrastructure, network appliances, software as a service, and platform as a service) with "providers". HashiCorp maintains an extensive list of official providers, and can also integrate with community-developed providers. [11] Users can interact with Terraform providers by declaring resources [12] or by calling data sources. [13] Rather than using imperative commands to provision resources, Terraform uses declarative configuration to describe the desired final state. Once a user invokes Terraform on a given resource, Terraform will perform CRUD actions on the user's behalf to accomplish the desired state. [14] [11] The infrastructure as code can be written as modules, promoting reusability and maintainability. [15]
Terraform supports a number of cloud infrastructure providers such as Amazon Web Services, Cloudflare, [16] Microsoft Azure, IBM Cloud, Serverspace, Selectel [17] Google Cloud Platform, [18] DigitalOcean, [19] Oracle Cloud Infrastructure, Yandex.Cloud, [20] VMware vSphere, and OpenStack. [21] [22] [23] [24] It can be configured to make use of multiple cloud platforms. [4]
As of 2019, Terraform is used by companies such as Barclays, Capital One, and GM Cruise. [4]