Terraform Concepts: Difference between revisions
Line 14: | Line 14: | ||
{{External|https://www.terraform.io/docs/providers/index.html}} | {{External|https://www.terraform.io/docs/providers/index.html}} | ||
A provider is responsible for creating and managing resources. Terraform uses [[Provider_Plug-In|provider plug-ins]] to translate its configuration into API instructions for the provider. In a configuration file, a provider is specified in a "provider" block. Multiple provider blocks can exist in a Terraform configuration file. | A provider is responsible for creating and managing resources. Terraform uses [[#Provider_Plug-In|provider plug-ins]] to translate its configuration into API instructions for the provider. In a configuration file, a provider is specified in a "provider" block. Multiple provider blocks can exist in a Terraform configuration file. | ||
Configured in the “provider” block. | Configured in the “provider” block. |
Revision as of 21:24, 13 November 2019
Internal
Overview
Terraform is a tool for building, changing and managing infrastructure, as code. It uses a configuration language named Hashicorp Configuration Language (HCL). Terraform is platform agnostic, and achieves that by using different provider APIs for resource provisioning, via plug-ins. A heterogenous environment can be managed with the same workflow.
Hashicorp Configuration Language (HCL)
HCL is human-readable. Configuration can also be JSON, but JSON is only recommended when the configuration is generated by a machine. Internally, the declarative language that drives provider API for resource provisioning.
Provider
A provider is responsible for creating and managing resources. Terraform uses provider plug-ins to translate its configuration into API instructions for the provider. In a configuration file, a provider is specified in a "provider" block. Multiple provider blocks can exist in a Terraform configuration file.
Configured in the “provider” block.
Provider Plug-In
Provider-specific resources are managed with provider plugins. Each provider plugin is a an encapsulated binary, distributed separated by Terraform. They are downloaded by terraform init and stored in a subdirectory of the current working directory.